送分大家来玩玩一个 存储过程返回结果集的的性能问题(sqlplus环境下,其他环境也可以)

kt563 2008-07-22 05:53:47
--利用9i出来的sys_refcursor
create or REPLACE PROCEDURE proc_get(p_rc out sys_refcursor) as
BEGIN
open p_rc for select table_name,tablespace_name,status from user_table_t;
END;
/

VARIABLE p_rc refcursor;
EXEC proc_get(:p_rc);
print;

--9i之前是要定义游标变量的
CREATE OR REPLACE PACKAGE pkg_test
AS
TYPE myrctype IS REF CURSOR;
PROCEDURE get (p_rc OUT myrctype);
END pkg_test;
/
CREATE OR REPLACE PACKAGE BODY pkg_test
AS
PROCEDURE get (p_rc OUT myrctype)
IS
sqlstr VARCHAR2 (500);
BEGIN
OPEN p_rc FOR
select table_name,tablespace_name,status from user_table_t;
END get;
END pkg_test;
/

VARIABLE p_rc refcursor;
exec pkg_test.get(:p_rc);
print p_rc;

=================〉
如果能够有效率更高的,我加分送。

...全文
101 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
kt563 2008-07-24
  • 打赏
  • 举报
回复
韩国MM,据说是天然的,不是艺术品。
在艺术品盛行的世界还有如此纯天然的存在,金泰熙。
Tracy5453 2008-07-23
  • 打赏
  • 举报
回复
好玩,JF
oraclerjsp 2008-07-23
  • 打赏
  • 举报
回复
学习
lw1a2 2008-07-23
  • 打赏
  • 举报
回复
这女人头是谁
allanmorgan 2008-07-23
  • 打赏
  • 举报
回复
学习!
kt563 2008-07-23
  • 打赏
  • 举报
回复
VARIABLE p_rc refcursor;
exec pkg_test.get(:p_rc);
print p_rc;

这一段,我没有在9i以前的版本中测试过,可能有点问题。
麻烦使用之前版本的朋友测试下,最好能将可行的语法贡献出来,小弟在这里先谢谢了。
fzm2008 2008-07-23
  • 打赏
  • 举报
回复
学习
hebo2005 2008-07-22
  • 打赏
  • 举报
回复
接分,学习,帮顶
kt563 2008-07-22
  • 打赏
  • 举报
回复
conn aos/aos@orcl
set serveroutput on
declare
type mytable is table of user_table_t%rowtype;
l_data mytable;
l_refc sys_refcursor;
BEGIN
open l_refc for select table_name,tablespace_name,status from user_table_t;
fetch l_refc BULK COLLECT into l_data;
CLOSE l_refc;
FOR i IN 1 .. l_data.COUNT
LOOP
DBMS_OUTPUT.put_line ( l_data (i).table_name||'`s TABLESPACE is '||l_data(i).tablespace_name);
END LOOP;
END;
/


---
这个方法就不用测试了,效率显然没我的好。
赫赫

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧