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

MS-SQL Server中的存储过程:

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

AdoQuery调用方法:

procedure TMain.btn_AdoqueryExecClick(Sender: TObject);
beginDataSource1.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);
beginDataSource1.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);
beginDataSource1.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;

演示程序:

转载于:https://www.cnblogs.com/xieyunc/archive/2013/04/15/9126576.html

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

  1. C#执行存储过程的方法

    语法注意点(原创): 1.cmd.CommandType = CommandType.Text;时, 在方法 public SqlCommand(string cmdText, SqlConnecti ...

  2. EF增删查改加执行存储过程和sql语句,多种方法汇总

    1 ActionUrl c = new ActionUrl() { ActionName="test", RequestUrl="/123/123", SubT ...

  3. c#执行oracle存储过程,C#中如何执行存储过程方法

    功能 :  根据调用的方法名称  反射动态调用  sql Command 的方法 代码如下: /// /// 存储过程的属性 /// ProcName 存储过程的名称 /// MethodName 执 ...

  4. EF 执行存储过程方法

    EF 执行存储过程方法:SqlParameter[] parms = new SqlParameter[] {new SqlParameter("@Detail_Item_ID", ...

  5. SQLserver存储过程简单写法与设置定时执行存储过程方法

    最近工作中需要写SQLserver的存储过程,第一次使用,简单记录下,以防遗忘. 在SQLserver可视化工具中编写,我的工具如下图: 首先点击你的数据库,找到可编程性,在可编程性里面右击存储过程- ...

  6. oracle 脚本定时,Oracle存储过程定时执行2种方法

    我们今天主要描述Oracle存储过程定时执行方法主要有2种方法,愿在你学习Oracle存储过程定时执行实际操作中以起到抛砖引玉的作用.你如果对其有兴趣的话你就可以点击以下的文章进行观看了. 1.编写s ...

  7. mysql 存储过程无效_用VC通过DLL包连接MySQL,执行存储过程后,再执行其他查询无效?解决方法...

    用VC通过DLL包连接mysql,执行存储过程后,再执行其他查询无效? MYSQL mysql; mysql_init(&mysql); mysql_real_connect(&mys ...

  8. 多种方法巧妙优化数据库

    多种方法巧妙优化数据库 日期:2011/12/24 16:18:01  来源:本站 点击率:330 我要评论(0)字号:T T T        1.没有索引或者没有用到索引(这是查询慢最常见的问题, ...

  9. 易语言 存储过程 mysql_在易语言中调用MS SQL SERVER数据库存储过程(Transact-SQL)方法总结...

    作者:liigo 日期:2010/8/25 Microsoft SQL SERVER 数据库存储过程,根据其输入输出数据,笼统的可以分为以下几种情况或其组合:无输入,有一个或多个输入参数,无输出,直接 ...

最新文章

  1. 全球数据进入ZB时代,希捷如何让数据创造深价值?
  2. Zookeeper watch机制
  3. C语言数组知识体系整理大学霸IT达人
  4. we自动化po模式_Web自动化测试—PO设计模式(一)
  5. leetcode day2 -- Sort List Insertion Sort List
  6. 天翼云从业认证(1.2)存储的概念、体系结构、块存储、对象存储、文件存储以及 RAID 磁盘管理技术
  7. mysql.sock 111,错误2002(HY000):无法通过套接字’/var/run/mysqld/mysqld.sock’连接到本地MySQL服务器(111)...
  8. 橙白oj18训练作业2-题解、代码
  9. 如何在面试时保持冷静_如何保持冷静并成为安全工程师
  10. python做股票系统_GitHub - yeyaowen/stock: stock,股票系统。使用python进行开发。
  11. zeppelin k8s安装部署和基本使用教程(在线的分析工具)
  12. 用GPU进行TensorFlow计算加速
  13. Chrome浏览器扩展开发系列之十五:跨域访问的XMLHttpRequest对象
  14. Diagrams for Mac(原生流程图制作工具)
  15. 数据库系统概论(基础篇)中国人民大学 第一次考试
  16. 烂笔头也需要常翻出来用用啊
  17. 网络WireShark进行抓包
  18. 短视频自媒体涨粉的“小心机“,如何快速涨粉
  19. 知识点滴 - 有关剧本的网站
  20. 马来西亚之旅——吉隆坡、马六甲、槟城和亚庇攻略

热门文章

  1. 团队项目改进与详细设计
  2. 《Linux高性能服务器编程》——2.4 IP路由
  3. linux下ORACLE之RAW创建
  4. eclipse集成maven
  5. 我们常常怕打扰别人,而忽略要打个电话问候对方,
  6. 7-13 日K蜡烛图
  7. Python实现随机生成10以内的加法
  8. Python在数字前方补0
  9. matlab双轴坐标系对齐0,MATLAB双轴坐标图的画法(详细)
  10. 在ubuntu下打开.TXT文件,中文显示为乱码