首页 新闻 搜索 专区 学院

怎么将存储过程执行的值赋给变量 set @pass= exec Pass '1','1' 这样不行 说'exec'附近有语法错误

0
悬赏园豆:50 [已解决问题] 解决于 2015-06-02 21:35

begin
declare @i int
declare @pass12 varchar(20)
declare @id varchar
exec @pass12=pass '1','1'
select @pass12 as 'a'
end

 

pass是存储过程

这样可以显示exec @pass12=pass '1','1' 的值,但是select @pass12 as 'a'显示的是0

坐拥百态的主页 坐拥百态 | 初学一级 | 园豆:184
提问于:2015-06-02 11:49
< >
分享
最佳答案
0

执行存储过程之后 返回的是一个结果集,所以你是不能用一个变量去接收的。

在你的这个里面,只是因为返回的结果集刚好只有一行一列,所以让你误以为返回的是一个字段,就可以直接用变量接收了。

至于为什么这样写之后 显示的是0,我也没搞明白。

收获园豆:50
北京_update | 菜鸟二级 |园豆:274 | 2015-06-02 14:40

那就是sql不支持这样弄么?那有没有别的办法,那个存储过程返回的值就是1行1列。

坐拥百态 | 园豆:184 (初学一级) | 2015-06-02 15:58

@style.boy: 你是想在一个存储过程中,获取另外一个存储过程的返回的数据,然后进行操作对吧?

既然返回的是结果集,你可以定义一个临时表啊


create table #t1(pass12 int)
insert into #t1(pass12)
exec pass 1,1
select pass12 from #t1
drop table #t1

北京_update | 园豆:274 (菜鸟二级) | 2015-06-02 16:05

@北京_update: 可以了,非常感谢

create table #t1(tpass varchar(30))


declare @pass varchar(30)
begin
delete from #t1
insert into #t1(tpass)exec pass 1,1
set @pass=(select tpass from #t1)
select @pass
end

坐拥百态 | 园豆:184 (初学一级) | 2015-06-02 17:31
其他回答(1)
0

这样肯定是有语法错误啊, 你把'1'这种特殊的字符串别这么输入, 用参数的形式传。

请叫我头头哥 | 园豆:9382 (大侠五级) | 2015-06-02 13:49
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册