【问题标题】:UPDATE statement: Returning into refcursorUPDATE 语句:返回到 refcursor
【发布时间】:2015-02-26 16:03:28
【问题描述】:

我有一个查询,它根据特定条件更新一组记录。我想获取该更新语句的结果集的列并将其传递回一个引用。

我可以使用RETURNING INTO 或在我的情况下使用RETURNING myrows BULK COLLECT INTO ... 来获得结果集。但是,我不确定如何使用游标进行这项工作 - 您不能使用更新语句执行 OPEN cursor FOR

我猜有一种方法可以将RETURNING 语句的结果放入我的光标中。我该怎么做?

【问题讨论】:

    标签: oracle cursor sql-update sql-returning


    【解决方案1】:

    假设您定义了一个 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 中声明的。

    【讨论】:

    • 感谢您的回答!我们最终选择了另一种方式。
    猜你喜欢
    • 1970-01-01
    • 2013-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-09-27
    • 1970-01-01
    • 1970-01-01
    • 2016-02-24
    相关资源
    最近更新 更多