使用存储过程中,最常用的莫过于查询数据表,并返回结果集。

在SQL SERVER 中,这类操作最简单,通过简单的select * from xx 即可完成。但是在Oracle中并不支持这种写法,那么我们怎么实现跟SQL SERVER同样的功能呢?且看以下代码:

create or replace procedure sp_getdept

(rep_type in varchar2,sel in varchar2,result out sys_refcursor)

as

     seq varchar2(40);
info varchar2(40); begin if rep_type = '' then
open result for select * from help;
end IF;
if rep_type = '' then
select seq,info into seq,info from help where rownum=1;
end if; end;

通过代码可以看到,oracle中通过游标sys_refcursor实现返回一个table格式的结构集。注意定义方式result out sys_refcursor,跟C#中out 参数类型有点类似。

sys_refcursor和 cursor 比较:

sys_refcursor不能用open,close ,fetch 进行操作。可以用作参数。

cursor可以用 open,close ,fetch操作。不可以用作参数。

下面是C#调用上例存储过程的代码:

 OracleConnection con = new OracleConnection("Password=manager;User ID=SYSTEM;Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=127.0.0.1)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=orcl)));");

            OracleCommand cmd = new OracleCommand("sp_getdept", con);

            cmd.CommandType = CommandType.StoredProcedure;

            OracleParameter p0 = new OracleParameter("rep_type", OracleType.VarChar);

            p0.Direction = ParameterDirection.Input;

            cmd.Parameters.Add(p0);

            cmd.Parameters["rep_type"].Value = "";

            OracleParameter p1 = new OracleParameter("result", OracleType.Cursor);

            p1.Direction = System.Data.ParameterDirection.Output;

            cmd.Parameters.Add(p1);

            OracleParameter p2 = new OracleParameter("sel", OracleType.VarChar);

            p0.Direction = ParameterDirection.Input;

            cmd.Parameters.Add(p2);

            cmd.Parameters["sel"].Value = "";

            OracleDataAdapter da = new OracleDataAdapter(cmd);

            DataSet ds = new DataSet();

            da.Fill(ds);

            Console.WriteLine(ds.Tables[].Rows[][].ToString());
Console.ReadLine();

希望能对您有所帮助。^_^。

oracle创建存储过程并返回结果集(附C#调用代码)的更多相关文章

  1. oracle的存储过程如何返回结果集

    CREATE OR REPLACE PACKAGE pkg_test AS     TYPE myrctype IS REF CURSOR;       PROCEDURE get (p_id NUM ...

  2. Oracle中函数/过程返回结果集的几种方式

    原文 Oracle中函数/过程返回结果集的几种方式 Oracle中函数/过程返回结果集的几种方式:    以函数return为例,存储过程只需改为out参数即可,在oracle 10g测试通过.    ...

  3. Oracle创建存储过程、执行存储过程基本语法

    >>>>>>>>>>>>>>>>>>>>>>>>> ...

  4. 存储过程不返回记录集导致ADO程序出错

    HRESULT _hr = get_adoEOF(&_result); IsEOF()函数如下:其中ADOCG::_RecordsetPtr m_pRecordset; BOOL IsEOF( ...

  5. PL SQL 存储过程 SQL SERVER创建存储过程及调用,Oracle创建存储过程及调用

    Oracle使用存储过程实例: 例1: //查出表字段赋值给存储过程变量 create proc proc_stu @sname varchar(20), //默认是输入参数(input),另外还有两 ...

  6. Oracle中函数如何返回结果集

    在Oracle中,用函数返回结果集有时候要用到,下面是demo: 1 2 3 4 5 6 7 create or replace type t_test as object ( id integer, ...

  7. Oracle 存储过程例子返回记录集

    转载:https://www.cnblogs.com/mikalshao/articles/1454134.html Oracle 不支持批量查询,因此无法从一个命令返回多个结果集.使用存储过程时,返 ...

  8. mybatis springmvc调用oracle存储过程,返回记录集

    参考: http://bbs.csdn.net/topics/390866155 辅助参考: http://www.2cto.com/kf/201307/226848.html http://blog ...

  9. java调用oracle存储过程,返回结果集

    package com.srie.db.pro; import java.sql.CallableStatement; import java.sql.Connection; import java. ...

随机推荐

  1. jquery完成带单选按钮的表格行高亮显示

    jquery完成带单选按钮的表格行高亮显示 上篇博客写的是复选框的,这次写的是单选框的,有时查询的时候,只能选择一条记录,如果将选中的这条记录的行高亮显示,同时该行的单选按钮也被选中了,这样会提高用户 ...

  2. (二)Bootstrap CSS 概览

    在这一章中,我们将讲解 Bootstrap 底层结构的关键部分,包括我们让 web 开发变得更好.更快.更强壮的最佳实践. HTML 5 文档类型(Doctype) Bootstrap 使用了一些 H ...

  3. zabbix 3.0 安装

    zabbix3.0安装注意: 1.PHP要5.4版本以上 2.防火墙关闭 3.selinux关闭 注:本操作系统为centos 6.5 X86   操作步骤 一.安装PHP 添加 epel 源 # r ...

  4. 【52】写了placement new也要写placement delete

    1.Widget* pw = new Widget; 调用了两个方法:第一个方法是operator new 负责分配内存:第二个方法是在分配的内存上构造Widget,即调用Widget的default ...

  5. Java和.NET下socket转换错误记录

    一个项目,需要JAVA的Socket客户端转换为C#的Socket客户端,使用的是短连接. 首先,java客户端代码如下: Socket socket = new Socket(); socket.c ...

  6. 同时使用ADO与Excel类库冲突的问题

    客户需要一个Demo程序实现Access数据库表导出到Excel表格,并将表中存储的照片(OLE对象)以其中一个字段(编号)命名存储到本地.程序中引入了ADO操作Access数据库("C:\ ...

  7. MySQL使用hugepage

    http://blog.csdn.net/dba_waterbin/article/details/9669929http://www.cnblogs.com/LMySQL/p/4689868.htm ...

  8. svn常用操作命令(不断更新中......)

      1.svn info显示本地或远程条目的信息.打印你的工作拷贝和URL的信息包括:路径.名称.URL.版本库的根.版本库的UUID.Revision.节点类型.最后修改作者.最后修改版本最后修改日 ...

  9. java跨平台性分析

    实不相瞒,Java是我见过的执行效率最低的程序设计语言,前不久在CSDN论坛上有个评测,计算9999的阶乘,同样的循环算法,Java的耗时是.NET的5倍.我以前很喜欢Serv-U,自从它用Java重 ...

  10. php读取图片成二进制流输出

    header( "Content-type: image/jpeg");$PSize = filesize('1.jpg');$picturedata = fread(fopen( ...