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
执行存储过程之后 返回的是一个结果集,所以你是不能用一个变量去接收的。
在你的这个里面,只是因为返回的结果集刚好只有一行一列,所以让你误以为返回的是一个字段,就可以直接用变量接收了。
至于为什么这样写之后 显示的是0,我也没搞明白。
那就是sql不支持这样弄么?那有没有别的办法,那个存储过程返回的值就是1行1列。
@style.boy: 你是想在一个存储过程中,获取另外一个存储过程的返回的数据,然后进行操作对吧?
既然返回的是结果集,你可以定义一个临时表啊
create table #t1(pass12 int)
insert into #t1(pass12)
exec pass 1,1
select pass12 from #t1
drop table #t1
@北京_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
这样肯定是有语法错误啊, 你把'1'这种特殊的字符串别这么输入, 用参数的形式传。