ADOQUERY调用SQL SERVER 里的存储过程的时,,,存储过程的返回值,程序要怎么去捕捉它.!?
我的存储过程如下:
/*
功能描述:判断给定的@Ad_ID nvarchar(3),@Ad_Password nvarchar(20)是否为合法用户.
参数表:@Ad_ID nvarchar(3),@Ad_Password nvarchar(20)
返回值:若用户名或密码为空返回-1,为合法用户返回1,否则返回0。*/
CREATE PROCEDURE sp_ADM_Login  
@Ad_ID nvarchar(3),
@Ad_Password nvarchar(20)
AS
if @Ad_ID='' or  @Ad_Password=''
return -1
select * from admin where Ad_id=@ad_id and Ad_Password=@Ad_Password
if @@rowcount<>0
return 1
else
return 0
GO
  with M_DataModule.ADOQuery do
  begin
    Close;
    Sql.Clear;
    Sql.Add('Exec sp_Adm_Login "'+User_ComboBox.Text+'","'+Pass_Edit.Text+'"');
    Parameters.CreateParameter('@Retrun_Value',ftinteger,pdReturnValue,0,0);
    ExecSql;
    Showmessage(inttostr(Parameters.ParamByName('@Retrun_Value').Value));
  end; 
可是这样取到的返回值每次都是0.
显然这种方法有错...有哪位大哥能指点一下是哪错了!??????????????????

解决方案 »

  1.   

    你在表单上用一个adoprocedure,对应属性里选择你的存储过程,然后点击一下属性里的parameters,点开之后,把最上面的@returnvalue删掉;然后你就直接对这个adoprocedure操作就行;     
    比如:with adoprocedure do  
        begin
          Parameters.ParamByName('@...').Value := ..
          Parameters.ParamByName('@...').Value := ..
          Execproc;  //or  open;
        end;
      

  2.   

    TO:Squsref
    能否告知一下用ADOQuery如何得到存储过程的Return值.
      

  3.   

    你返回的是return的值,那你先不要把@return那个返回值删掉看看呢;然后用fields[0].value获取看看;