问题描述
嗨,先生,
面临时间问题。在动态游标类型中使用的查询,如 'open for select '采取550毫秒,但我们作为集合传递的输出作为流水线值。当时它需要更多的时间,如50 s。请给我们一些解决方案。
示例代码,如,
已经创建了集合变量,并将其作为示例。
谢谢,
Manoj
面临时间问题。在动态游标类型中使用的查询,如 'open for select '采取550毫秒,但我们作为集合传递的输出作为流水线值。当时它需要更多的时间,如50 s。请给我们一些解决方案。
示例代码,如,
Function fn-name (a number, b varchar, c varchar) Return records as pipelined Is Begin Case when a = 1 Then Open c for Select * from t1 where column = c; When a = 2 Then Open c for Select * from t1 where column =c; End case; Fetch c into output collection variable; Close c; Return output collection variable; End;复制
已经创建了集合变量,并将其作为示例。
谢谢,
Manoj
专家解答
抱歉,我不能复制那个结果。我们需要看看你的测试用例。这是我的
SQL> @drop t Y1 Y2 -------------------------------------------------------------------------------------------- ------------------------- TABLE cascade constraints purge 1 row selected. Table dropped. SQL> @drop sample_list Y1 Y2 -------------------------------------------------------------------------------------------- ------------------------- TYPE 1 row selected. Type dropped. SQL> @drop sample_row Y1 Y2 -------------------------------------------------------------------------------------------- ------------------------- TYPE 1 row selected. Type dropped. SQL> SQL> create or replace 2 type sample_row as object 3 ( x int, 4 y date, 5 z varchar2(200) 6 ); 7 / Type created. SQL> SQL> create or replace 2 type sample_list as table of sample_row 3 / Type created. SQL> SQL> create table t as select d.* from dba_objects d, 2 ( select 1 from dual connect by level <= 10 ); Table created. SQL> select count(*) from t; COUNT(*) ---------- 795110 1 row selected. SQL> SQL> create or replace 2 function f1(p_owner varchar2) return sample_list is 3 rc sys_refcursor; 4 result sample_list := sample_list(); 5 begin 6 open rc for 7 'select sample_row(object_id,created,object_name) from t where owner = :1' using p_owner; 8 fetch rc 9 bulk collect into result; 10 close rc; 11 return result; 12 end; 13 / Function created. SQL> SQL> create or replace 2 function f2(p_owner varchar2) return sample_list pipelined is 3 rc sys_refcursor; 4 result sample_list := sample_list(); 5 begin 6 open rc for 7 'select sample_row(object_id,created,object_name) from t where owner = :1' using p_owner; 8 fetch rc 9 bulk collect into result; 10 close rc; 11 for i in 1 .. result.count 12 loop 13 pipe row ( result(i) ); 14 end loop; 15 return; 16 end; 17 / Function created. SQL> SQL> set timing on SQL> select max(x), count(*) from table(f1('SYS')); MAX(X) COUNT(*) ---------- ---------- 107230 519710 1 row selected. Elapsed: 00:00:01.60 SQL> select max(x), count(*) from table(f2('SYS')); MAX(X) COUNT(*) ---------- ---------- 107230 519710 1 row selected. Elapsed: 00:00:00.80 SQL> SQL> SQL>复制
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
Oracle RAC 一键安装翻车?手把手教你如何排错!
Lucifer三思而后行
596次阅读
2025-04-15 17:24:06
【纯干货】Oracle 19C RU 19.27 发布,如何快速升级和安装?
Lucifer三思而后行
567次阅读
2025-04-18 14:18:38
XTTS跨版本迁移升级方案(11g to 19c RAC for Linux)
zwtian
485次阅读
2025-04-08 09:12:48
Oracle数据库一键巡检并生成HTML结果,免费脚本速来下载!
陈举超
473次阅读
2025-04-20 10:07:02
【ORACLE】记录一些ORACLE的merge into语句的BUG
DarkAthena
457次阅读
2025-04-22 00:20:37
【ORACLE】你以为的真的是你以为的么?--ORA-38104: Columns referenced in the ON Clause cannot be updated
DarkAthena
432次阅读
2025-04-22 00:13:51
Oracle 19c RAC更换IP实战,运维必看!
szrsu
432次阅读
2025-04-08 23:57:08
【活动】分享你的压箱底干货文档,三篇解锁进阶奖励!
墨天轮编辑部
417次阅读
2025-04-17 17:02:24
火焰图--分析复杂SQL执行计划的利器
听见风的声音
362次阅读
2025-04-17 09:30:30
3月“墨力原创作者计划”获奖名单公布
墨天轮编辑部
358次阅读
2025-04-15 14:48:05