我真的回避了我的问题的“最好”一词,但它确实是最合适的词。什么是从Oracle函数返回记录的标准方式?
从函数返回记录的最佳(最有效)方式是什么?
目前,我有这样的:
FUNCTION myFunct(param1 VARCHAR2) RETURN SYS_REFCURSOR AS
myCursor SYS_REFCURSOR;
BEGIN
OPEN myCursor FOR
SELECT *
FROM myTable
WHERE field = param1;
RETURN(myCursor);
END myFunct;
我可以运行此罚款,但与其他一切我读像(表式,隐式游标等),我真搞不清楚什么是最合适的。
P.S.我从一个proc调用它后如何循环这个游标?
编辑: 我读过,我只能遍历游标ONCE(forums.oracle.com/thread/888365),但实际上我想多次循环内容。这是否意味着我选择使用关联数组呢?
这取决于使用情况。你是否将数据返回给客户端应用程序?在你真实的代码中,你在做什么需要PL/SQL?如果没有,为什么不使用视图?你正在编写一个多阶段ETL过程吗?将'REF CURSOR'返回到另一块PL/SQL将是非常不寻常的。 –
这个链接可能会帮助你http://stackoverflow.com/questions/4125992/how-to-return-a-refcursor-from-oracle-function – ajmalmhd04
@JustinCave - “将REF CURSOR返回给另一个一块PL/SQL“。会吗?参考游标可以使用静态或动态SQL对结果集进行编程控制。这并不意味着我们可能想要在离散函数中封装程序控制,特别是在逻辑复杂的情况下。另外还有一个正常的用例:我们有几个不同的代码片段,都需要读取结果集。 – APC