注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

Start Know

自分を信じて、自分で一定でいけます

 
 
 

日志

 
 

Oracle]高效的PL/SQL程序设计(五)--调用存储过程返回结果集  

2008-09-24 11:12:28|  分类: SQL SERVER |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

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;

程序方面使用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;

  评论这张
 
阅读(574)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017