with M_DataModule.ADOQuery do
    begin
      close;
      sql.Clear;
      parameters.Clear;
      Sql.Add('Exec sp_Adm_Login "001","001"');
      parameters.CreateParameter('@Return_Value',ftinteger,pdReturnValue,0,0);
      Execsql;
      showmessage(inttostr(Parameters.ParamByName('@Return_Value').Value));
    end;
存储过程输入参数 001 001 之后 Return值应为1 (查询分析器里测试过)
为什么上面的程序得到的值是0,求大家帮忙 我的存储过程如下:
/*
功能描述:判断给定的@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

解决方案 »

  1.   

    试试:
    Sql.Add('Exec sp_Adm_Login '''001''','''001'''');
      

  2.   

    老大,Sql.Add('Exec sp_Adm_Login "001","001"');我怎么感觉是你用的双引号啊!!!!
    应该是两个单引号.......老大
    Sql.Add('Exec sp_Adm_Login ''00'',''00''');
      

  3.   

    showmessage(inttostr(Parameters.ParamByName('@Return_Value').Value));
    ==============>
    showmessage(inttostr(Parameters.FieldByName(@Return_Value).Value));
    你看看这样呢
      

  4.   

    调用存储过程用 ADOStoredProc1 好了
      

  5.   

    with M_DataModule.ADOStoredProc do
      begin
        Close;
        ProcedureName:='sp_Adm_Login';
        Parameters.Refresh;
        Parameters.ParamByName('@Ad_ID').Value:='009';
        Parameters.ParamByName('@Ad_Password').Value:='009';
        Parameters.CreateParameter('@Return_Value',ftinteger,pdReturnValue,0,0);
        ExecProc;
      end;
    ======================
    提示:为存储过程sp_Adm_Login指示太多的参数...
    谁能给个ADOStoredProc调用存储过程sp_Adm_Login'并得到返回值的例子...
      

  6.   

    ADOStoredProc已解决...求ADOQuery的解决办法...........
      

  7.   

    with M_DataModule.ADOQuery do
        begin
          close;
          sql.Clear;
          Sql.Add('Exec sp_Adm_Login '''001''''+','+'''001'''');
          Execsql;
          showmessage(inttostr(Parameters.ParamByName('@Return_Value').Value));
        end;
      

  8.   

    with M_DataModule.ADOQuery do
        begin
          close;
          sql.Clear;
          Sql.Add('Exec sp_Adm_Login '+Quotedstr('001')+','+Quotedstr('001'));
          open;
          showmessage(fields[0].asstring);
        end;
      

  9.   

    但是 showmessage(fields[0].asstring); 是得到ADOQuery第一个字段的值  即 将显示 001
      

  10.   

    with M_DataModule.ADOQuery do
        begin
          close;
          sql.Clear;
          parameters.Clear;
          parameters.CreateParameter('@Return_Value',ftinteger,pdReturnValue,0,0);//这句放错了位置
          Sql.Add('Exec sp_Adm_Login "001","001"');
          Execsql;
          showmessage(inttostr(Parameters.ParamByName('@Return_Value').Value));
        end;
      

  11.   

    不行啊,错误提示:ParamByName('@Return_Value') not found郁闷中...
      

  12.   

    哦,错误提示: Parameters '@Return_Value' not found