ADOQUERY,CLIENTDATASET,ADOSTOREPROC执行存储过程【多种方法】

来源:互联网 发布:win10怎么重置网络配置 编辑:程序博客网 时间:2024/06/06 18:20

本文用实例的方式演示了如何分别使用ADOQUERY,CLIENTDATASET,ADOSTOREPROC执行MS-SQL Server中存储过程,既可以返回记录集(表)数据,又可以返回参数信息,供读者参考。

MS-SQL Server中的存储过程:

CREATE PROCEDURE [dbo].[up_TestAdoExec]     @inVar varchar(100),     @outVar varchar(100) outputASBEGIN    select * from 操作日志表    set @outVar='传入的参数值为:'+@inVarEND

AdoQuery调用方法:

procedure TMain.btn_AdoqueryExecClick(Sender: TObject);begin  DataSource1.DataSet := ADOQuery1;  ADOQuery1.Close;  ADOQuery1.SQL.Text := 'Execute up_TestAdoExec :@inVar,:@outVar output';  ADOQuery1.Parameters.Clear; //调用存储过程时,必须把此语句放在对SQL.Text的赋值操作之后,否则会发生如果多次执行存储过程时则会出错的结果  ADOQuery1.Parameters.CreateParameter('@inVar',ftString,pdInput,100,'');  ADOQuery1.Parameters.CreateParameter('@outVar',ftString,pdOutput,100,'');  ADOQuery1.Parameters.ParamByName('@inVar').Value := Edit1.Text;  //ADOQuery1.Parameters.ParamByName('@outVar').Value := Edit2.Text; //单向输出参数,赋值没有意义。  ADOQuery1.Open;  Edit2.Text := ADOQuery1.Parameters.ParamByName('@outVar').Value;end;

ClientDataSet调用方法(实际上就是三层中的远端执行):

procedure TMain.btn_ClientDataSetExecClick(Sender: TObject);begin  DataSource1.DataSet := ClientDataSet1;  ClientDataSet1.ProviderName := 'DataSetProvider1';  DataSetProvider1.DataSet.Close; //即执行了 Adoquery1.Close;  ClientDataSet1.Close;  ClientDataSet1.CommandText := 'Execute up_TestAdoExec :@inVar,:@outVar output';  ClientDataSet1.Params.Clear; //调用存储过程时,必须把此语句放在对CommandText的赋值操作之后  ClientDataSet1.Params.CreateParam(ftString,'@inVar',ptInput);  ClientDataSet1.Params.CreateParam(ftString,'@outVar',ptOutput);  ClientDataSet1.Params.ParamByName('@inVar').Size := 100;  ClientDataSet1.Params.ParamByName('@inVar').Value := Edit1.Text;  ClientDataSet1.Params.ParamByName('@outVar').Size := 100;  //ClientDataSet1.Params.ParamByName('@outVar').Value := Edit2.Text;  //ClientDataSet1.Execute;//如果不返回结果集,执行此语句  ClientDataSet1.Open;  Edit2.Text := ClientDataSet1.Params.ParamByName('@outVar').Value;end;

AdoDataSetStoreProc调用方法:

procedure TMain.btn_AdoStoreProcExecClick(Sender: TObject);begin  DataSource1.DataSet := ADOStoredProc1;  ADOStoredProc1.Close;  ADOStoredProc1.ProcedureName := 'up_TestAdoExec';  ADOStoredProc1.Parameters.Clear;  ADOStoredProc1.Parameters.CreateParameter('@inVar',ftString,pdInput,100,'');  ADOStoredProc1.Parameters.CreateParameter('@outVar',ftString,pdOutput,100,'');  ADOStoredProc1.Parameters.ParamByName('@inVar').Value := Edit1.Text;  //ADOStoredProc1.Parameters.ParamByName('@outVar').Value := Edit2.Text;  ADOStoredProc1.Open;  Edit2.Text := ADOStoredProc1.Parameters.ParamByName('@outVar').Value;end;

演示程序:


原创粉丝点击