dephi中怎么执行存储过程?
也可以介绍点资料
多谢~!

解决方案 »

  1.   

    dephi里执行存储过程的代码
    ADOP : TADOStoreDProc
    with ADOP do
    begin           
       Active := false;
       ProcedureName := 'PRO1'; //存储过程名
       Parameters.Clear;
       (*创建存储过程的参数*)
       Parameters.CreateParameter('@AAAA, ftstring,pdInput, 10, Null);
       Parameters.CreateParameter('@IVALUE1', ftInteger, pdInput, 10,Null);
       Parameters.CreateParameter('@IVALUE2', ftInteger, pdInput,10, Null);
       Parameters.CreateParameter('@IVALUE3', ftInteger, pdInput,10, Null);
       Prepared := True;
       (*向存储过程传递参数*)
       Parameters.ParamByName('@AAAA').Value := 输入;
       Parameters.ParamByName('@IVALUE1').Value := 输入;
       Parameters.ParamByName('@IVALUE2').Value := 输入;
       Parameters.ParamByName('@IVALUE3').Value := 输入;
       ExecProc;
    End;
      

  2.   

    --@b输出参数
    create proc p(@a int,@b int output)
    as
    if @a=0 
    begin
      set @b=0 
      select @b
    end
    if @a=1 
    begin
      set @b=1
      select @b
    end
    --查询分析器调用
    declare @c int
    exec p 1,@c
    print @c
    //delphi
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      with ADOStoredProc1 do
      begin
        ProcedureName := 'p;1';
        Close;
        Parameters.Refresh;
        Parameters.ParamByName('@a').value := 1;
        Parameters.ParamByName('@b').value := -1;
        ExecProc;
        ShowMessage(Parameters.ParamByName('@b').value);//取得输出参数的值
      end;
    end;
      

  3.   

    with AdoQuery1 do
      begin
        Close;
        SQL.Clear;
        SQL.Add('exec 存储过程名 :AddDate1,:AddDate2,:CustName');  
        //adddate1,adddate2,custname是存储过程中定义的参数
        Parameters.ParamByName('AddDate1').Value:=DateTimePicker1.Date;
        Parameters.ParamByName('AddDate2').Value:=DateTimePicker2.Date;
        Parameters.ParamByName('CustName').Value:=Edit_Cust.Text;
        Execsql;
      end;