【下载dotConnect for Oracle最新版本】

dotConnect for Oracle(原名OraDirect.NET)建立在ADO.NET技术上,为基于Oracle数据库的应用程序提供完整的解决方案。它为设计应用程序结构带来了新的方法,提高工作效率,使数据库应用程序的开发更简便。

本篇文章介绍如何在OracleCommand类的帮助下,使用Dotconnect for Oracle创建和使用Oracle存储过程和函数。

有两种通过OracleCommand执行存储过程的一般方法。

第一种方法是将过程调用包含到PL/SQL块中,并通过将其放入OracleCommand.CommandText属性来执行该块。在这种情况下,该过程返回的数据可以在同一块中立即处理。如果过程需要一些参数,则应将它们添加到OracleCommand.Parameters集合中。此方法与通常的命令执行没有区别。

第二种方法是将OracleCommand.CommandType设置为System.Data.commandType.StoredProcedure。在这种情况下,CommandText应该设置为过程的名称。以下示例显示如何使用上一节中的get-all-depts-proc过程填充数据表:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
// Open the connection
OracleConnection connection
    new OracleConnection("Server=Ora; User Id=Scott; Password = tiger;");
connection.Open();
// Create a command
OracleCommand command = new OracleCommand();
command.Connection = connection;
// Set the CommandType property to execute
// stored procedures or functions by this command
command.CommandType = System.Data.CommandType.StoredProcedure;
// Set the name of procedure or function to be executed
command.CommandText = "get_all_depts_proc";
// The ParameterCheck property should be true to automatically
// check the parameters needed for the procedure execution.
command.ParameterCheck = true;
// At this moment, the command is ready for execution.
// As we have an output cursor parameter, we may use the command to fill a data table.
OracleDataTable dt = new OracleDataTable(command, connection);
dt.Fill();
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Dim connection _
    As New OracleConnection("Server=Ora; User Id=Scott; Password = tiger;")
connection.Open()
' Create a command.
Dim command = New OracleCommand()
command.Connection = connection
' Set the CommandType property to execute stored procedures or functions by this command.
command.CommandType = System.Data.CommandType.StoredProcedure
' Set the name of procedure or function to be executed.
command.CommandText = "get_all_depts_proc"
' The ParameterCheck property should be true to automatically
' check the parameters needed for the procedure execution.
command.ParameterCheck = True
' At this moment, the command is ready for execution.
' As we have an output cursor parameter, we may use the command to fill a data table.
Dim dt = New OracleDataTable(command, connection)
dt.Fill()

将CommandText设置为“get-all-depts-func”,相同的代码使用存储函数而不是过程填充数据表。

优化存储过程执行

当执行ExecuteReader或ExecuteEscalar时,并且OracleCommand.CommandType设置为System.Data.commandType.StoredProcedure时,默认情况下将执行附加查询,以检查过程是否是流水线的,如果不是,则说明参数(签出光标参数)。这允许您在仅设置必要的过程参数后执行存储过程,而不必费心完全正确地填充参数集合,因为在获取元数据后,它将自动填充。

但是,执行附加查询可能不合适,并且在某些情况下可能会导致性能损失。Dotconnect for Oracle允许使用DescribeStoredProcedure连接字符串参数禁用此检查。

如果只将此连接字符串参数设置为false,OracleCommand将执行存储的例程,而不进行任何额外的检查。在这种情况下,例程不能是表值函数,它的所有参数都必须手动设置。

如果要在不进行其他检查的情况下执行表值函数,则需要将OracleCommand的IsTableValuedFunction属性设置为true。这允许您在不进行额外检查的情况下执行表值函数。将此属性设置为true也是执行非管道表值函数的唯一方法。即使describeStoredProcedure设置为true,也必须将IsTableValuedFunction设置为true才能执行非管道表值函数。

如果只对OracleCommand的单个实例禁用附加检查,而不禁用连接的附加检查,请将IsTableValuedFunction属性(根据执行的函数是否为表值,设置为true或false)和ImplicitRefCursors属性设置为false。设置IsTableValuedFunction属性将禁用检查执行的函数是否为表值,并将ImplicitRefCursors属性设置为false将禁用检查其他光标参数。

转载于:https://blog.51cto.com/14048826/2346066

dotConnect for Oracle入门指南(八):通过OracleCommand类使用存储过相关推荐

  1. dotConnect for Oracle入门指南(四):将数据插入表

    [下载dotConnect for Oracle最新版本] dotConnect for Oracle(原名OraDirect.NET)建立在ADO.NET技术上,为基于Oracle数据库的应用程序提 ...

  2. Oracle入门(八)之权限

    定义:控制用户在数据库中所能进行的操作权限 分类:系统权限和对象权限 一.系统权限 系统权限(system Privilege):允许执行一组特定的命令 CREATE SESSION 创建会话 CRE ...

  3. oracle打patch,Oracle初学者入门指南-How to get Oracle Patch?

    Oracle初学者入门指南-How to get Oracle Patch? 怎样获得/找到Oracle的Patch,这是一个朋友在Itpub上问到的问题.他还举了一个生动的例子: 比如我要使用ora ...

  4. oracle把数据分开,Oracle初学者入门指南-系统与用户数据分离

    Oracle初学者入门指南-系统与用户数据分离 今天一个朋友的数据库出现问题,请我帮忙查看,其实问题本身很简单: Fri Jun 19 10:30:00 2006 ORA-1653: unable t ...

  5. 条形码入门指南(八):二维条形码

       现在条形码无处不在,几乎用于所有业务领域的识别.在业务流程中实施条形码时,可以自动执行程序以减少人为错误并提高生产率.条形码入门指南就是介绍IDAutomation旗下的条形码产品以及条形码符号 ...

  6. 张高兴的 .NET IoT 入门指南:(八)基于 GPS 的 NTP 时间同步服务器

    时间究竟是什么?这既可以是一个哲学问题,也可以是一个物理问题.古人对太阳进行观测,利用太阳的投影发明了日晷,定义了最初的时间.随着科技的发展,天文观测的精度也越来越准确,人们发现地球的自转并不是完全一 ...

  7. 入门指南目录页 -PaddlePaddle 飞桨 入门指南 FAQ合集-深度学习问题

    入门指南目录页 -PaddlePaddle 飞桨 入门指南 FAQ合集 GT_Zhang关注 0.1012019.08.01 18:43:34字数 1,874阅读 795 Hi,欢迎各位来自Paddl ...

  8. 博士大佬为机器学习总结的人工智能入门指南!

    今天给大家推荐一位认识的好朋友:top985高校AI博士(本硕博985),CSDN博客专家,其开源了周志华西瓜书<机器学习>纯手推笔记!荣登趋势榜,标星600+ Github | 博士大佬 ...

  9. RMAN快速入门指南

    RMAN快速入门指南   1. What is RMAN? 什么是RMAN?    4 2. Terminology 专业词汇解释    4 2.1. Backup sets 备份集合    4 2. ...

最新文章

  1. 关闭Delphi的RTTI
  2. excel python 形状_何使用Python操作Excel绘制柱形图
  3. iOS进阶之底层原理-消息机制
  4. jsp页面模块的来源
  5. Query Ajax 实例 ($.ajax、$.post、$.get)
  6. Coreseek Windows下安装调试
  7. 告别3D Touch 2019款iPhone手机或将拿掉屏幕压感功能
  8. 对1,3,4,6,7,8组合显示成“1,3-4,6-8”方法
  9. Tomcat Https配置
  10. 前端开发面试题收集 JS
  11. 自增字段不连续_MySQL中自增主键不连续之解决方案。(20131109)
  12. pdf所有者和计算机怎么删除,如何修改PDF文件以及如何删除一页
  13. 七脉轮位置_人体的七个脉轮能量中心与它的代表意义
  14. matlab中isequal函数,MATLAB中的isequal函数的用法
  15. 仿微信拍照和图片选择开源库(适配android7.0)multi-image-selector
  16. java计算机毕业设计网上花店系统源码+系统+mysql数据库+LW文档+部署文件
  17. 通过调试 Nginx 源码来定位有趣 Nginx 转发合并斜杠和编码问题
  18. 新走遍美国(一)---故事梗概
  19. Soft:Eric软件界面的简介、案例应用之详细攻略
  20. 快速解决Vue项目打包后文件过大问题

热门文章

  1. 量子力学 一 基础8 经典概率与量子概率
  2. WPF canvas、基本图形、path几个示例
  3. Win32 堆内存分配示例
  4. 图解用MySQL创建进销存数据库
  5. 树、森林与二叉树的相互转换
  6. 【BZOJ1492】[NOI2007]货币兑换Cash 斜率优化+cdq分治
  7. web应用安全防御100技 好书再次阅读, 变的只是表象,被概念迷惑的时候还是静下心来回顾本质...
  8. ProjectManagement::Redmine备份与恢复
  9. USACO 3.2 kimbits DP
  10. 手机bootstrap搜索框_你知道手机可以对摄像头进行图像调节吗