oracle 游标变量REF Cursor
来源:互联网 发布:阿里云域名备案服务号 编辑:程序博客网 时间:2024/05/29 07:40
转自:http://blog.sina.com.cn/s/blog_55dbebb00100gxsc.html
自:http://blog.csdn.net/qfs_v/archive/2008/05/07/2410308.aspx
注意:这篇文章的可取之处是定义很好,但是举的例子不能执行,由于我现在也是入门,还没有修改的能力。很怀疑作者是有意的,故意让读者执行不了。
在上文
1,什么是 REF游标 ?
2,REF 游标 有什么作用?
3,静态游标和REF 游标的区别是什么?
4,什么是REF 游标变量?
5,怎么使用
6,怎样让REF游标作为参数传递?
这个是经过修改的,可以运行的程序:
Declare
2.
1.要执行返回 REF CURSOR 的存储过程,必须在 OracleParameterCollection 中定义参数,包括Cursor 的 OracleType 以及 Output 的 Direction。 数据提供程序只支持作为输出参数绑定 REF CURSOR。
示例:
REF CURSOR 示例(使用 Oracle Scott/Tiger 架构中定义的表)
创建 Oracle 包和包正文
CREATE OR REPLACE PACKAGE CURSPKG AS TYPE T_CURSOR IS REF CURSOR; PROCEDURE OPEN_ONE_CURSOR (N_EMPNO IN NUMBER, IO_CURSOR IN OUT T_CURSOR); PROCEDURE OPEN_TWO_CURSORS (EMPCURSOR OUT T_CURSOR, DEPTCURSOR OUT T_CURSOR);END CURSPKG;/
CREATE OR REPLACE PACKAGE BODY CURSPKG AS PROCEDURE OPEN_ONE_CURSOR (N_EMPNO IN NUMBER, IO_CURSOR IN OUT T_CURSOR) IS V_CURSOR T_CURSOR; BEGIN IF N_EMPNO <> 0 THEN OPEN V_CURSOR FOR SELECT EMP.EMPNO, EMP.ENAME, DEPT.DEPTNO, DEPT.DNAME FROM EMP, DEPT WHERE EMP.DEPTNO = DEPT.DEPTNO AND EMP.EMPNO = N_EMPNO; ELSE OPEN V_CURSOR FOR SELECT EMP.EMPNO, EMP.ENAME, DEPT.DEPTNO, DEPT.DNAME FROM EMP, DEPT WHERE EMP.DEPTNO = DEPT.DEPTNO; END IF; IO_CURSOR := V_CURSOR; END OPEN_ONE_CURSOR; PROCEDURE OPEN_TWO_CURSORS (EMPCURSOR OUT T_CURSOR, DEPTCURSOR OUT T_CURSOR) IS V_CURSOR1 T_CURSOR; V_CURSOR2 T_CURSOR; BEGIN OPEN V_CURSOR1 FOR SELECT * FROM EMP; OPEN V_CURSOR2 FOR SELECT * FROM DEPT; EMPCURSOR := V_CURSOR1; DEPTCURSOR := V_CURSOR2; END OPEN_TWO_CURSORS; END CURSPKG;/
示例:OracleDataReader 中的 REF CURSOR 参数
using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.UI;using System.Web.UI.WebControls;using System.Configuration;using System.Data;using System.Data.OracleClient;namespace pro{ public partial class WebForm4 : System.Web.UI.Page { string OracleConnectionString = ConfigurationManager.ConnectionStrings["scott"].ConnectionString; protected void Page_Load(object sender, EventArgs e) { OracleConnection conn = new OracleConnection(OracleConnectionString); OracleCommand comm = new OracleCommand(); comm.Connection = conn; comm.CommandType = CommandType.StoredProcedure; comm.CommandText = "curspkg.open_one_cursor"; comm.Parameters.Add(new OracleParameter("n_empno", OracleType.Number)).Value = "0"; comm.Parameters.Add(new OracleParameter("io_cursor", OracleType.Cursor)).Direction = ParameterDirection.Output; conn.Open(); OracleDataReader rdr = comm.ExecuteReader(); GridView1.DataSource = rdr; GridView1.DataBind(); conn.Close(); } }}
示例:使用 OracleDataReader 从多个 REF CURSOR 检索数据
OracleConnection conn; using (conn = new OracleConnection(OracleConnectionString)) { conn.Open(); OracleCommand comm = new OracleCommand(); comm.Connection = conn; comm.CommandType = CommandType.StoredProcedure; comm.CommandText = "curspkg.open_two_cursors"; comm.Parameters.Add(new OracleParameter("empcursor", OracleType.Cursor)).Direction = ParameterDirection.Output; comm.Parameters.Add(new OracleParameter("deptcursor", OracleType.Cursor)).Direction = ParameterDirection.Output; OracleDataReader rdr = comm.ExecuteReader(); GridView2.DataSource = rdr; GridView2.DataBind(); rdr.NextResult(); GridView3.DataSource = rdr; GridView3.DataBind(); rdr.Close(); }
- oracle 游标变量REF Cursor
- oracle 游标变量ref cursor详解
- oracle 游标变量ref cursor详解
- oracle 游标变量ref cursor详解
- 10.3游标变量 --REF CURSOR
- 参照变量_游标变量(ref cursor)
- oracle 之游标 ref cursor的用法
- 动态游标(REF CURSOR)
- 动态游标(REF CURSOR)
- 关于游标cursor、游标引用 ref cursor
- 关于oracle中动态游标的使用例子ref cursor
- Oracle REF CURSOR 使用方法
- Oracle ref cursor使用
- oracle ref -cursor
- oracle ref -cursor
- Oracle REF Cursor
- Oracle ref cursor使用
- Oracle ref cursor使用
- window在本地创建SVN步骤和遇到的问题解决
- VB实验报告“找出二维数组n×m中的鞍点”
- Advanced JavaScript Array Methods: fill and reverse
- Google Maps JavaScript API 使用
- 树checkbox选择jquery实例
- oracle 游标变量REF Cursor
- 雅虎WEB前端网站优化 -- 34条军规
- VS如何安装WTL模板
- git新手学习和使用
- VB语言5“用户名”与“密码”实验报告
- 如何使用iClient for JavaScript叠加地图
- ucosIII内核文件分析-os_msg.c
- POJ 2778 (AC自动机 矩阵快速幂)
- 从配置文件读取数据连接信息,利用泛型和java反射机制,写一个公共的增删改查数据库操作类