【问题标题】:Oracle - Output number of rows affected from dynamic merge statementOracle - 输出受动态合并语句影响的行数
【发布时间】:2014-02-19 00:02:31
【问题描述】:

我在带有MERGE 语句的存储过程中有一个动态sql,并使用EXECUTE IMMEDIATE <dynamic_sql> 执行它。当我通过 sql 工作表运行合并查询时,它会告诉我合并的行数。如何通过动态sql检索相同的信息?

我将不胜感激任何针对这个问题的努力。

【问题讨论】:

    标签: sql oracle merge


    【解决方案1】:

    运行任何 SQL 语句(静态或动态)后,SQL%ROWCOUNT 变量会告诉您有多少行受到影响。

      EXECUTE IMMEDIATE l_sql_stmt;
      l_rows_affected := SQL%ROWCOUNT;
    

    【讨论】:

    • 谢谢。要声明的变量是什么数据类型?我必须使用 DBMS_OUTPUT.PUT_LINE(l_rows_affected) 打印它吗?
    • @user3224907 - integernumberpls_integer 都应该是我发布的 sn-p 中 l_rows_affected 的有效数据类型。你可以用价值做任何你想做的事。 dbms_output 应该是一个非常轻量级的跟踪实用程序——您应该假设没有人会看到那里写入的数据。如果合并的行数很重要,您应该对结果进行一些处理——将其写入日志表、将其写入日志文件、从过程中返回,等等。
    • After running "any" SQL statement... :但不适用于选择查询,除非您将 IntoUsing 子句与立即执行一起使用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-14
    • 2014-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-18
    相关资源
    最近更新 更多