有一个存储过程:
CREATE  proc aa(@flag int)
as
if @flag=1 
begin
  raiserror('flag is 1',16,1)
  return 1
end
else
begin
  raiserror('flag is 0',16,1)
  return 0
endDELPHI程序如下:
procedure TForm1.Button1Click(Sender: TObject);
var s: char;
    Re:integer;
begin    try
    ADOStoredProc1.Parameters.ParamByName('@flag').Value:=1;
    ADOStoredProc1.ExecProc;
    re:=adostoredproc1.Parameters.ParamByName('@RETURN_VALUE').Value;
    //showmessage(re);
//    showmessage(adostoredproc1.Parameters.ParamValues['@Return_Value']);
    except
    on e:exception do showmessage(e.Message);
   end;
  showmessage(inttostr(re));
end;
返回值使终都是0,好像都没有执行RETURN这一句?

解决方案 »

  1.   


    CREATE  proc aa(@flag int) 
    as 
    if @flag=1 
    begin 
      raiserror('flag is 1',16,1) 
      return 1 
    end 
    else 
    begin 
      raiserror('flag is 0',16,1) 
      return 0 
    end declare @i int
    execute @i =  aa  1
    select @i
      

  2.   

    我是用DELPHI调用的不过我用你的方式,试过:提示
    服务器: 消息 50000,级别 16,状态 1,过程 aa,行 6
    flag is 1(所影响的行数为 1 行)
    不是没有RETURN 的值呀~
      

  3.   

    由于Raise会返回一个错误,所以在查询分析器中执行1楼的代码会显示“消息”选项卡。
    你选择“网格”选项卡,就能看到返回的return 的值。