delphi 中如何使用sql 存储过程的返回值

解决方案 »

  1.   

    按参数取得
    http://zhidao.baidu.com/question/48019041.html
      

  2.   

    用TStoredProc,用Params[xxx]取output参数
      

  3.   

    一樣的用法
    qry_BaseTemp.Close;
      qry_BaseTemp.SQL.Clear;
      qry_BaseTemp.SQL.Text:=' exec GetBmbhsByFzr '+ QuotedStr(Trim(_UserName));
      qry_BaseTemp.Open;
      _bmid:=Trim(qry_BaseTemp.fieldbyname('bmbh').AsString);
      _bmjb:=Trim(qry_BaseTemp.fieldbyname('bmjb').AsString);
      _sjbm:=Trim(qry_BaseTemp.fieldbyname('sjbm').AsString);
      qry_BaseTemp.Close;
      qry_BaseTemp.SQL.Clear;
      qry_BaseTemp.SQL.Text:=' select distinct sjbm from RES_DEPARTMENT where fzr='+ QuotedStr(Trim(_UserName))+' ';
      qry_BaseTemp.Open;
      _nextsj:=qry_BaseTemp.fieldbyname('sjbm').AsString;
      

  4.   

    你的存储过程最后得到的是什么数据,那些数据就返回到那个用于调用存储过程的ADO组件中,其他处理就和直接在DELPHI中用简单SQL语句得到的数据一样。
      

  5.   

    我只想获得return with  ADOStoredProc1 do
        begin
          Close;
          Parameters.Clear;
          ProcedureName:='student';
          Parameters.Refresh;
          Parameters.CreateParameter('@name',ftString, pdInput,10,v_report_code);
          Parameters.CreateParameter('@id',ftFloat, pdInput,25,i_deliver_price);
          ExecProc;    end;
        //showmessage(ADOStoredProc1.Parameters.ParamByName('@RETURN_VALUE').Value);
        //showmessage(ADOStoredProc1.Parameters.items[1].Value);
        showmessage(ADOStoredProc1.Fields[0].asstring);  
      

  6.   


    //不用这么麻烦
    Adoquery1.close;
    Adoquery1.sql.clear;
    Adoquery1.sql.add('DECLARE @s varchar(30) ' +
    'exec proc1 ''1'','''2',@s output ' +
    'select @s '
    );Adoquery1.prepared;
    Adoquery1.open;
    str:=Adoquery1.fields[0].asstring;
      

  7.   

    存储过程这样写:
    create proc dbo.p_myproc @p1 varchar(20)
    as
      delcare @info varchar(100)
      --......................
      --返回结果
      select @info as info 
    DELPHI 这样调用:aq.close;   // aq 是 TADOQuery 控件
    aq.sql.text:='exec p_myproc '+''''+p1+'''';
    try
      aq.open;
    except
    end;if aq.isempty=false then
      showmessage(aq.fields[0].AsString);
    ...........................
      

  8.   

    存储过程:
    Create procedure proc_login
    username varchar(20),
    password varchar(20)
    as
    declare @result int
    select @result=count(*) from table1 where user=@username and pass=@password
    if @result=0
    return 0
    return 1
    godelphi代码:
    var ret:integer;
    ......
          with ADOStoredProc1 do
            begin
              Close;
              ProcedureName:='proc_login';
              Parameters.Clear;
              Parameters.Refresh;
              Parameters.ParamByName('@username').Value:= Edit1.text;
              Parameters.ParamByName('@password').Value:= Edit2.text;
              ExecProc;
              ret:= Parameters.ParamByName('@return_value').Value;
            end;
    if ret=1 //用户名密码匹配
    begin
    //你想要的操作
    end