sqlserver2005 存储过程返回值的问题

--下面是test1过程CreatePROCEDURE[dbo].[test1](@snvarchar(20),@idintOUTPUT)ASBEGINSETNOCOUN... --下面是test1过程
Create PROCEDURE [dbo].[test1](
@s nvarchar(20) ,
@id int OUTPUT
)
AS
BEGIN
SET NOCOUNT ON;
SET @id = 1
return 2
END

--测试
declare @s nvarchar(20),@id int,@ret int
exec @ret=test1 @s,@id
select @id,@ret

@ret=2 正常。
为什么@id不等于1而是null??怎么改
展开
 我来答
jj...h@163.com
2017-03-06 · TA获得超过234个赞
知道答主
回答量:368
采纳率:0%
帮助的人:145万
展开全部

返回结果的方式有很多我说两种,一种是利用存储过程的参数可以把存储过程的结果返回,另外一种是在外部接收存储过程内部return出来的结果。当然啦,还可以在存储过程内部select要返回的结果。
比如:

create proc test
  @p_errormsg varchar(80) = '' out
  as
   select @p_errormsg = '测试'
   return -100
go

--------------------------------------------------------------

declare @errorcode int 
declare @errormsg varchar(80) 
exec @errorcode = test @errormsg out

select @errorcode as errorcode, @errormsg as errormsg
  --@errorcode是return出来的结果 @errormsg 是输出参数@p_errormsg的执行结果

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式