存储过程是这么写的,
Declare @id int
    BEGIN TRANSACTION
   
       Insert into xxxxxTable(f1,f2)values(@a,@b)
       Select @id=@@identity
        Insert into abcTable(ff1,ff2,ff3)values(@c,@id,@dd)               IF @@error <> 0  --发生错误
        BEGIN
            ROLLBACK TRANSACTION
            RETURN 0
        END
        ELSE
        BEGIN
            COMMIT TRANSACTION
            RETURN 1    --执行成功
       END我想知道,应用程序如何知道存储过程返回了1还是0呢?

解决方案 »

  1.   

    测试"存储过程"名是否存在
        if not 存储过程名  then
          begin
            执行存储过程;
            变量=1;   //真
          end
       else
           变量=0;
      

  2.   

    楼主可以建一个带输出参数的存储过程 即参数用output 标识
    详细请参阅SQLSERVER帮助,肯定会有更多的收获。
      

  3.   

    存储过程只返回一个整数可以用output参数。
    在delphi中以参数形式就能获取值。
    ADOStoredProc1.Close;   
      ADOStoredProc1.ProcedureName   :=   'procedurename';   
      ADOStoredProc1.Parameters.Clear;   
      ADOStoredProc1.Parameters.CreateParameter('@i', ftString, pdOutput,250, '');   
      ADOStoredProc1.ExecProc;    
      caption:=ADOStoredProc1.Parameters.parambyname('@i').Value;如果不改存储过程,则在open之后用FieldValues[0]可以取得
      

  4.   

    x.Parameters.ParameterByName('@RETURN_VALUE')
      

  5.   

    sp1.Parameters.ParamByName('@RETURN_VALUE')