存储过程(简单)
CREATE PROC test_ret
(
@input_int int =0,
@bb int output -- =9999
--set @bb=14
)
AS
IF (@input_int=0)
begin
set @bb=0
end
RETURN @bb
IF (@input_int> 0)
begin
set @bb=1000
end
RETURN @bb
IF (@input_int <0)
begin
set @bb=-1000
end
RETURN @bb
go
--执行该存储过程:
DECLARE @Ret_int int
EXEC test_ret 50,@Ret_int output
最后提示:过程 'test_ret ' 试图返回状态值 NULL,但不允许这样做。将改为返回状态值 0。(我不是给@bb赋值了吗???)
[解决办法]
第一 RETURN @bb 後面的代全部都不行
所以如果 @input_int=0 不成立的 @bb就有被值
另外,存程的出不需要return
可以改
CREATE PROC test_ret
(
@input_int int =0,
@bb int output
)
AS
begin
set @bb = case when @input_int = 0 then 0
when @input_int < 0 then -1000
when @input_int > 0 then 1000
end
end
--用存程
declare @bb int
exec test_ret 10, @bb output
select @bb
--返回
value
-----------
1000
(所影响的行数为 1 行)