以下两个存储过程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

解决方案 »

  1.   

    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
      
    END
      

  2.   

    朋友,在过程中点击执行出现以下提示:无法为当前对象而将行添加到 sysdepends,因为此对象所依赖的对象 'mycs' 缺失。仍将创建此对象。
      

  3.   

    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
      

  4.   

    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
      

  5.   

    朋友,还是不行啊……
    提示还是如下啊!
    无法为当前对象而将行添加到 sysdepends,因为此对象所依赖的对象 'mycs' 缺失。仍将创建此对象。
      

  6.   

    先建mycs,在同一数据库下另建mycsa.或者把我上面4楼的语句全部复制过去,执行一下试试?
      

  7.   

    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楼上的代码应该没有问题的呀。
      

  8.   

    楼主查一下数据表和存储过程的"所有者"是不是一致,MSSQL远程操作会出现这种问题。
      

  9.   

    谢谢1楼的Linares和4楼的qianjin036a,你们的程序是对的,是我的大意使程序无法运行!
    其他朋友的程序可能也是正确的,不过我没测试,在此也谢谢了!祝朋友们情人节快乐!
      

  10.   

    对于此程序我测试过,结果不对,我用set @abc=@val测试,得到的值为空,即使用set @abc =@val+1测试,得到的也是空!
      

  11.   

    上面的程序在declare @abcd intt和exec mycs @abcd,@val 之间插入set @abcd=10
      

  12.   


    declare @abcd int之后没赋值!应该使用 set @abcd=值
      

  13.   

    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=空,请问如何写此过程?