栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

从包装的游标中选择数据,然后打印

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

从包装的游标中选择数据,然后打印

您已经定义了流水线函数,这不是调用它的方法:

SQL> begin  2  Cursor_pkg_func.f_trans(5);  3  end;  4  /Cursor_pkg_func.f_trans(5);*ERROR at line 2:ORA-06550: line 2, column 1:PLS-00221: 'F_TRANS' is not a procedure or is undefinedORA-06550: line 2, column 1:PL/SQL: Statement ignoredSQL>

您需要使用TABLE()函数。虽然这样您会发现代码中的错误:

SQL>  select * from table(Cursor_pkg_func.f_trans(5))  2   /SMITHSMITHSMITH''''SMITHSMITHSMITHSMITHERROR:ORA-00028: your session has been killed273660 rows selected.SQL>

请注意,我必须从另一个会话中终止该会话,否则它将仍在运行。因此,让我们简化函数并摆脱那毫无意义的第二个循环…。

CREATE OR REPLACE PACKAGE BODY Cursor_pkg_func IS    FUNCTION f_trans (p in number) RETURN outrecset PIPELINED IS    out_rec outrec_typ;    BEGIN        OPEN Cursor_pkg.C1;        LOOP FETCH Cursor_pkg.C1 INTO Cursor_pkg.row_emp; EXIT when Cursor_pkg.C1%NOTFOUND; out_rec.var_char2 := Cursor_pkg.row_emp.last_name; PIPE ROW(out_rec);        END LOOP;        CLOSE Cursor_pkg.C1;     RETURN;     END f_trans;END Cursor_pkg_func;/

....然后瞧!

SQL> select * from table(Cursor_pkg_func.f_trans(5))  2  /VAR_CHAR2------------------------------ADAMSJAMESMILLERSMITHSQL>

“当我添加开始和结束时;选择不起作用”

您已经创建了流水线函数。你为什么这么做?之所以这样做,是因为您想要一个可以在SELECt语句的FROM子句中使用的PL /
SQL函数。这就是流水线函数的用例。因此,将调用放入匿名PL / SQL块中实际上没有任何意义。

但不管怎么说。

请阅读文档。它是非常全面的,它是在线免费的。《 PL / SQL参考》中的相关部分是“静态SQL”一章。很明显,PL / SQL中的SELECT语句必须
始终将 记录提取到具有某些描述的变量中。在这方面,匿名PL / SQL块与存储过程相同。
了解更多。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/456124.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号