[Oracle]高效的PL/SQL程序设计(五)--调用存储过程返回结果集
来源:互联网 发布:北京理工大学网络教育 编辑:程序博客网 时间:2024/05/28 06:05
Oracle支持通过ref游标在调用存储过程后返回结果集, 使用游标在内存消耗以及时间上都要大大的优于返回数组变量的做法!
示例如下:数据库方面,建立一个Package
create or replace package ref_cur_demo is
type rc is ref cursor;
procedure ref_cursor(p_owner in varchar2,p_cursor in out rc);
end ref_cur_demo;
create or replace package body ref_cur_demo is
procedure ref_cursor(p_owner in varchar2,p_cursor in out rc)
is
begin
open p_cursor for select object_name,object_type from all_objects where owner = p_owner and rownum<3;
end;
end ref_cur_demo;
type rc is ref cursor;
procedure ref_cursor(p_owner in varchar2,p_cursor in out rc);
end ref_cur_demo;
create or replace package body ref_cur_demo is
procedure ref_cursor(p_owner in varchar2,p_cursor in out rc)
is
begin
open p_cursor for select object_name,object_type from all_objects where owner = p_owner and rownum<3;
end;
end ref_cur_demo;
程序方面使用C#建立一个小型应用程序,主要代码如下:
Oracle.DataAccess.Client.OracleConnection oracleConnection1=new OracleConnection("data source=precolm2;user id=colmtest;password=colmtest");
oracleConnection1.Open();
string strSQL = @"ref_cur_demo.ref_cursor";
Oracle.DataAccess.Client.OracleDataAdapter da = new Oracle.DataAccess.Client.OracleDataAdapter();
Oracle.DataAccess.Client.OracleCommand cmd = new Oracle.DataAccess.Client.OracleCommand(strSQL,oracleConnection1);
cmd.CommandType = CommandType.StoredProcedure;
Oracle.DataAccess.Client.OracleParameter pram = new Oracle.DataAccess.Client.OracleParameter("p_owner",Oracle.DataAccess.Client.OracleDbType.Varchar2);
pram.Value = "COLMTEST";
cmd.Parameters.Add(pram);
Oracle.DataAccess.Client.OracleParameter pram1 = new Oracle.DataAccess.Client.OracleParameter("p_cursor",Oracle.DataAccess.Client.OracleDbType.RefCursor);
pram1.Direction = ParameterDirection.Output;
cmd.Parameters.Add(pram1);
da.SelectCommand = cmd;
DataSet ds = new DataSet();
da.Fill(ds);
this.dataGrid1.DataSource=ds.Tables[0].DefaultView;
oracleConnection1.Open();
string strSQL = @"ref_cur_demo.ref_cursor";
Oracle.DataAccess.Client.OracleDataAdapter da = new Oracle.DataAccess.Client.OracleDataAdapter();
Oracle.DataAccess.Client.OracleCommand cmd = new Oracle.DataAccess.Client.OracleCommand(strSQL,oracleConnection1);
cmd.CommandType = CommandType.StoredProcedure;
Oracle.DataAccess.Client.OracleParameter pram = new Oracle.DataAccess.Client.OracleParameter("p_owner",Oracle.DataAccess.Client.OracleDbType.Varchar2);
pram.Value = "COLMTEST";
cmd.Parameters.Add(pram);
Oracle.DataAccess.Client.OracleParameter pram1 = new Oracle.DataAccess.Client.OracleParameter("p_cursor",Oracle.DataAccess.Client.OracleDbType.RefCursor);
pram1.Direction = ParameterDirection.Output;
cmd.Parameters.Add(pram1);
da.SelectCommand = cmd;
DataSet ds = new DataSet();
da.Fill(ds);
this.dataGrid1.DataSource=ds.Tables[0].DefaultView;
- [Oracle]高效的PL/SQL程序设计(五)--调用存储过程返回结果集
- [Oracle]高效的PL/SQL程序设计(五)--调用存储过程返回结果集
- [Oracle]高效的PL/SQL程序设计(五)--调用存储过程返回结果集
- [Oracle]高效的PL/SQL程序设计(五)--调用存储过程返回结果集
- Oracle pl/sql编程 25--调用返回结果集的存储过程
- 调用Oracle存储过程返回结果集
- java调用oracle返回结果集的存储过程
- Oracle和My Sql返回结果集的存储过程
- oracle 返回结果集的存储过程
- Oracle的存储过程返回结果集
- pl/sql存储过程返回record类型和集合类型的结果,Java里如何调用呢
- pl/sql 有返回值的存储过程 java调用pl/sql过程 实例
- pl/sql 编写 Oracle存储过程 调用存储过程返回集合
- ASP 调用 ORACLE存储过程并返回结果集
- C#调用ORACLE存储过程返回结果集及函数
- C#调用ORACLE存储过程返回结果集及函数
- C#调用ORACLE存储过程返回结果集及函数
- C#调用ORACLE存储过程返回结果集及函数
- 简历中的自我评价用语
- 想要做好老板先要懂得怎样留住员工
- 用java取得当前时间(转)--文章出处忘记了,下次写上
- [Oracle]体系结构(一)--概述
- [Oracle]高效的PL/SQL程序设计(六)--%ROWTYPE的使用
- [Oracle]高效的PL/SQL程序设计(五)--调用存储过程返回结果集
- [Oracle]高效的PL/SQL程序设计(四)--批量处理
- 结构体中指向函数的指针
- [Oracle]高效的PL/SQL程序设计(三)--Package的优点
- BLOG开心了
- [Oracle]高效的SQL语句之分析函数(四)--lag()/lead()
- extern "C" ZZ
- [Oracle]高效的SQL语句之分析函数(三)--row_number() /rank()/dense_rank()
- [Oracle]高效的SQL语句之分析函数(二)--max()