以下两个存储过程mycs和mycsa,请问如何在mycsa中调用mycs,谢谢! CREATE PROCEDURE mycs @abc int ASBEGIN if @abc>10 begin RETURN 0 end else begin RETURN 1 end ENDCREATE PROCEDURE mycsa @abc int output ASBEGIN -- 调用mycs过程,如果此过程返回0则set @abc=300,否则set @abc=3000。 END
CREATE PROCEDURE mycsa @abc int output ASBEGIN declare @val int -- 调用mycs过程,如果此过程返回0则set @abc=300,否则set @abc=3000。 exec @val = mycs @abc set @abc = case @val when 0 then 300 else 3000 end
CREATE PROCEDURE mycs @abc int AS BEGIN if @abc>10 RETURN 0 else RETURN 1 END go CREATE PROCEDURE mycsa @abc int output AS BEGIN -- 调用mycs过程,如果此过程返回0则set @abc=300,否则set @abc=3000。 declare @val int exec @val = mycs @abc set @abc = case @val when 0 then 300 else 3000 end select @abc END go exec mycsa 1 /* ----------- 3000(1 行受影响) */ exec mycsa 100 /* ----------- 300(1 行受影响) */ go drop procedure mycs,mycsa
CREATE PROCEDURE mycs @abc int, @ret int outputASBEGIN if @abc>10 begin @ret=0 end else begin @ret=1 end ENDCREATE PROCEDURE mycsa @abc int output ASBEGIN declare @val int exec mycs @abc,@val set @abc = case @val when 0 then 300 else 3000 end END
CREATE PROCEDURE mycs @abc int, @ret int outputASBEGIN if @abc>10 begin @ret=0 end else begin @ret=1 end ENDCREATE PROCEDURE mycsa @abc int output ASBEGIN declare @val int exec mycs @abc,@val set @abc = case @val when 0 then 300 else 3000 end END楼上的代码应该没有问题的呀。
CREATE PROCEDURE mycs @abc int, @ret int outputASBEGIN if @abc>10 begin set @ret=0 end else begin set @ret=1 end ENDCREATE PROCEDURE mycsa @abc int output ASBEGIN declare @val int declare @abcd int set @abcd=10 exec mycs @abcd,@val set @abc=@val END 以上程序结果是@abc=空,请问如何写此过程?
@abc int output
ASBEGIN declare @val int
-- 调用mycs过程,如果此过程返回0则set @abc=300,否则set @abc=3000。
exec @val = mycs @abc
set @abc = case @val when 0 then 300 else 3000 end
END
@abc int
AS
BEGIN
if @abc>10
RETURN 0
else
RETURN 1
END
go
CREATE PROCEDURE mycsa
@abc int output
AS
BEGIN
-- 调用mycs过程,如果此过程返回0则set @abc=300,否则set @abc=3000。
declare @val int
exec @val = mycs @abc
set @abc = case @val when 0 then 300 else 3000 end
select @abc
END
go
exec mycsa 1
/*
-----------
3000(1 行受影响)
*/
exec mycsa 100
/*
-----------
300(1 行受影响)
*/
go
drop procedure mycs,mycsa
@abc int,
@ret int outputASBEGIN
if @abc>10
begin
@ret=0
end
else
begin
@ret=1
end
ENDCREATE PROCEDURE mycsa
@abc int output
ASBEGIN
declare @val int
exec mycs @abc,@val
set @abc = case @val when 0 then 300 else 3000 end
END
提示还是如下啊!
无法为当前对象而将行添加到 sysdepends,因为此对象所依赖的对象 'mycs' 缺失。仍将创建此对象。
@abc int,
@ret int outputASBEGIN
if @abc>10
begin
@ret=0
end
else
begin
@ret=1
end
ENDCREATE PROCEDURE mycsa
@abc int output
ASBEGIN
declare @val int
exec mycs @abc,@val
set @abc = case @val when 0 then 300 else 3000 end
END楼上的代码应该没有问题的呀。
其他朋友的程序可能也是正确的,不过我没测试,在此也谢谢了!祝朋友们情人节快乐!
declare @abcd int之后没赋值!应该使用 set @abcd=值
@abc int,
@ret int outputASBEGIN
if @abc>10
begin
set @ret=0
end
else
begin
set @ret=1
end
ENDCREATE PROCEDURE mycsa
@abc int output
ASBEGIN
declare @val int
declare @abcd int
set @abcd=10
exec mycs @abcd,@val
set @abc=@val
END
以上程序结果是@abc=空,请问如何写此过程?