我有一个查询,根据特定条件更新一组记录。我想获取该update语句的结果集的列,并将其传递回refcursor。
我可以使用RETURNING INTO
或我的RETURNING myrows BULK COLLECT INTO ...
来获取结果集。但是,我不确定如何使用游标进行此操作 - 您无法使用更新语句执行OPEN cursor FOR
。
我猜测有一种方法可以将RETURNING
语句的结果存入我的光标。我怎么能这样做?
答案 0 :(得分:0)
假设您已定义SQL集合(而不是PL / SQL集合),您应该能够
RETURNING my_column
BULK COLLECT INTO my_collection;
然后
OPEN p_rc
FOR SELECT *
FROM TABLE( my_collection );
虽然有效,但有一些警告。如果您希望UPDATE
修改大量行(或者您希望许多会话运行此代码),则将所有这些数据存储在集合中可能会占用PGA中的大量空间,这可能会产生负面影响性能。将一堆数据读入集合只是为了将它全部发送回SQL引擎也往往有点不优雅。而且,正如我最初所说,这假设您的集合是在SQL级别声明的,而不是在PL / SQL中声明。