读书人

存储过程(简单)解决方法

发布时间: 2012-01-31 21:28:41 作者: rapoo

存储过程(简单)
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 行)

读书人网 >SQL Server

热点推荐