c#调用oracle存储过程

CREATE OR REPLACE PACKAGE pkg_tableType IS type Tabletype is ref cursor; PROCEDURE SP_CPZD ( CPNO IN VARCHAR2, STATUS IN VARCHAR2, t_sql out Tabletype ); END; CREATE OR REPLACE package BODY pkg_tableType is PROCEDURE SP_CPZD ( CPNO IN VARCHAR2, STATUS IN VARCHAR2, t_sql out Tabletype ) IS BEGIN OPEN t_sql FOR select * from ball b where b.no=CPNO and b.type =STATUS ; END SP_CPZD; END pkg_tableType; #region 存储过程操作 /// /// 执行存储过程 /// /// 存储过程名 /// 存储过程参数 /// OracleDataReader public static OracleDataReader RunProcedure(string storedProcName, IDataParameter[] parameters ) { OracleConnection connection = new OracleConnection(connectionString); OracleDataReader returnReader; connection.Open(); OracleCommand command = BuildQueryCommand( connection,storedProcName, parameters ); command.CommandType = CommandType.StoredProcedure; returnReader = command.ExecuteReader(); return returnReader; } /// /// 执行存储过程 /// /// 存储过程名 /// 存储过程参数 /// DataSet结果中的表名 /// DataSet public static DataSet RunProcedure(string storedProcName, IDataParameter[] parameters, string tableName ) { using (OracleConnection connection = new OracleConnection(connectionString)) { DataSet dataSet = new DataSet(); connection.Open(); OracleDataAdapter sqlDA = new OracleDataAdapter(); sqlDA.SelectCommand = BuildQueryCommand(connection, storedProcName, parameters ); sqlDA.Fill(dataSet, tableName ); connection.Close(); return dataSet; } } /// /// 构建 OracleCommand 对象(用来返回一个结果集,而不是一个整数值) /// /// 数据库连接 /// 存储过程名 /// 存储过程参数 /// OracleCommand private static OracleCommand BuildQueryCommand(OracleConnection connection,string storedProcName, IDataParameter[] parameters) { OracleCommand command = new OracleCommand(storedProcName, connection ); command.CommandType = CommandType.StoredProcedure; foreach (OracleParameter parameter in parameters) { command.Parameters.Add( parameter ); } return command; } /// /// 执行存储过程,返回影响的行数 /// /// 存储过程名 /// 存储过程参数 /// 影响的行数 /// public static int RunProcedure(string storedProcName, IDataParameter[] parameters, out int rowsAffected ) { using (OracleConnection connection = new OracleConnection(connectionString)) { int result; connection.Open(); OracleCommand command = BuildIntCommand(connection,storedProcName, parameters ); rowsAffected = command.ExecuteNonQuery(); result = (int)command.Parameters["ReturnValue"].Value; //Connection.Close(); return result; } } /// /// 创建 OracleCommand 对象实例(用来返回一个整数值) /// /// 存储过程名 /// 存储过程参数 /// OracleCommand 对象实例 private static OracleCommand BuildIntCommand(OracleConnection connection,string storedProcName, IDataParameter[] parameters) { OracleCommand command = BuildQueryCommand(connection,storedProcName, parameters ); command.Parameters.Add( new OracleParameter ( "ReturnValue", OracleType.Int32,4,ParameterDirection.ReturnValue, false,0,0,string.Empty,DataRowVersion.Default,null )); return command; } #endregion public DataSet GetCPResult(string s_aN_CPNO) { OracleParameter[] parameter = { new OracleParameter("CPNO",OracleType.VarChar,100), new OracleParameter("STATUS",OracleType.VarChar,100), new OracleParameter("t_sql", OracleType.Cursor)}; parameter[0].Value = s_aN_CPNO; parameter[1].Value = "3"; parameter[2].Direction = System.Data.ParameterDirection.Output; return RunProcedure("pkg_tabletype.sp_cpzd", parameter, "ds"); }

©著作权归作者所有:来自51CTO博客作者yangyoushan的原创作品,如需转载,请注明出处,否则将追究法律责任

c#调用oracle存储过程,c#调用oracle存储过程相关推荐

  1. Oracle数据库中调用Java类开发存储过程、函数的方法

    Oracle数据库中调用Java类开发存储过程.函数的方法 时间:2014年12月24日  浏览:5538次 oracle数据库的开发非常灵活,不仅支持最基本的SQL,而且还提供了独有的PL/SQL, ...

  2. oracle 定时任务 job 调用存储过程有回到输出参数(含out参数)

    oracle 定时任务 job 调用存储过程有返回输出参数(含out参数) 因前台调用一个含有OUT参数的存储过程,同时在JOB里也想调用同一个存储过程,不想将OUT参数去掉重新建一个存储过程再被JO ...

  3. oracle创建包 和调用,oracle创建函数和调用存储过程和调用函数的例子(区别)...

    创建函数: 格式:create or replace function func(参数 参数类型) Return number Is Begin --------业务逻辑--------- End; ...

  4. oracle数据块调用存储过程,VC调用存储过程的通用方法(ORACLE篇)

    先对上一篇调用SQLServer的存储过程作一点补充,就是如果存储过程里有Insert,update,delete等操作,最后返回结果集,按示例代码有可能得不到数据,因为返回的数据有可能不在第一个结果 ...

  5. vb.net调用oracle存储过程,vbnet2008连接oracle增删改查学习笔记(经典crud_含存储过程).doc...

    vbnet2008连接oracle增删改查学习笔记(经典crud_含存储过程).doc 我的VBNETORACLE增删改查学习笔记(本源码在VBNET2008下测试通过)学习VBNET有一段时间了,之 ...

  6. Oracle存储过程及调用

    Oracle存储过程语法 Oracle的存储过程语法如下: ? 1 2 3 4 5 6 create procedure 存储过程名称(随便取) is     在这里可以定义常量.变量.游标.复杂数据 ...

  7. oracle中调用过程,oracle中如何调用存储过程

    oracle中如何调用存储过程 发布时间:2020-03-08 03:28:03 来源:51CTO 阅读:511 作者:lxg290 一.通过pls块来调用存储过程: declare p_dzno v ...

  8. oracle创建函数和调用存储过程和调用函数的例子(区别)

    创建函数: 格式:create or replace function func(参数 参数类型) Return number Is Begin --------业务逻辑--------- End; ...

  9. oracle存储while用mysql_oracle存储过程while

    Oracle下我个人认为有些事情不一定用存储过程,但还是说一下 oracle 存储过程的基本语法 1.基本结构 CREATE OR REPLACE PROCEDURE 存储过程名字 ( 参数1 IN ...

  10. 利用oracle执行系统命令,利用oracle存储过程执行操作系统命令(转)

    以下方法在WINNT,LINUX下的oracle9i上测试通过,java过程调用系统命令 首先给使用java存储过程的用户授予一定的权限 <>表示所有文件,也可以单独指定文件. r w e ...

最新文章

  1. mysql ldap_OpenLDAP 使用MySQL作为数据库
  2. 2678v3支持内存频率_电脑内存别乱加,不了解这些白花钱
  3. 教你怎么快速配置 React
  4. ae 创建图像等高线 蒙版_Pixelmator ——图像处理软件
  5. C语言函数题-查找数组每行的最大值
  6. 手把手,教你用MaxCompute+OpenSearch搭建分布式搜索引擎
  7. python面向对象编程指南 脚本之家_python对象及面向对象技术详解
  8. 工具使用-curl/wget
  9. mysql慢查询ep_mysql 慢查询分析
  10. 解决IE11安装时需要“获取更新”(IE11离线安装)
  11. table-首列冻结
  12. 图像工作回顾之五:视频检索
  13. npm run build: rimraf: command not found
  14. c++逆天改命进阶--哈希表
  15. 通过U盘安装系统时,提示无法在驱动器分区上安装windows的解决办法
  16. tmall API接口关键字获取商品数据
  17. Office宏病毒Virus.MSExcel.Agent.f的查杀方法
  18. java 初级、中级、高级工程师
  19. esp8266驱动电机
  20. 6.3 由学得用——《逆袭大学》连载

热门文章

  1. 经典老歌:眼睛渴望眼睛的重逢
  2. Beginning 创建之初
  3. OpenCV C++实现频域理想低通滤波器
  4. 使用python自带的虚拟环境创建虚拟环境
  5. Spring Boot通过ApplicationArguments获取args参数
  6. 计算机反复蓝屏问题--ntoskrnl.exe
  7. Unity 中配置文件Excel 转xml ;josn;序列化ScriptableObject及加载(最详细)。
  8. 这个医生说的防疫措施,我挺认可的
  9. html数字动画效果,数字滚动动画效果
  10. 小袋鼠你往哪儿跳——遗传算法基础及其本质