存储过程的返回值
使用 RETURN 语句指定存储过程的返回代码。
如果返回值在-1到-99之间,表示没有成功执行,可以通过判断返回值来进行相应的处理。
可以用RETURN语句将大于0或者小于-99的整数作为自定义返回值,来表示不同的执行结果。
典型代码
DECLARE @result INT
EXECUTE @result=my_pro
【例】创建存储过程,根据读者证号获取已经还回图书的册数,并使用自定义返回值标识执行状态。自定义返回值的含义如下:
0 成功执行。
1 未指定所需参数值。
2 指定参数值无效。
3 获取借阅历史数据时出错。
代码如下
CREATE PROCEDURE usp_Get_ReturnedItemCount
@PatronID VARCHAR(20) = NULL,
@COUNT INT OUTPUT
AS
BEGIN
SET NOCOUNT ON;
IF @PatronID IS NULL RETURN (1)
ELSE
BEGIN
-- 确认有该读者证号
IF (SELECT COUNT (*) FROM Patron
WHERE PatronID=@PatronID)= 0
RETURN (2)
END
SELECT @COUNT= COUNT(*) FROM Lend
WHERE PatronID = @PatronID
IF @@ERROR <> 0
RETURN (3)
ELSE
RETURN (0)
END
执行代码
DECLARE @PatronID VARCHAR(20),@nCount INT,@nRtn INT --声明变量
SELECT @PatronID ='T0101' --给变量赋值
EXECUTE @nRtn=usp_Get_ ReturnedItemCount @PatronID,
@nCount OUTPUT;
IF @nRtn = 0 --检查返回值
BEGIN
PRINT '执行成功!'
PRINT '您已经归还' + CONVERT(VARCHAR(10),@nCount)+'册图书!'
END
ELSE IF @nRtn = 1
PRINT '必须输入读者证号.'
ELSE IF @nRtn = 2
PRINT '无此读者.'
ELSE IF @nRtn = 3
PRINT '获取数据出错.'
ELSE
PRINT '其他错误'