【问题标题】:Track what an SQL-query actually does (insert/update/delete) in Oracle跟踪 SQL 查询在 Oracle 中实际执行的操作(插入/更新/删除)
【发布时间】:2011-10-28 16:14:11
【问题描述】:

是否有可能以某种方式记录 SQL 语句的结果。例如:

INSERT INTO bonus SELECT ename, job, sal, comm FROM emp
WHERE comm > sal * 0.25;

如何获取实际插入的行(如果是另一个查询,则更新或删除),而不是仅仅获取“5行插入。”。如果能得到 SQL 形式的变化,那就太好了。

【问题讨论】:

    标签: sql oracle debugging logging


    【解决方案1】:

    这在 SQL Server 中有效,但恐怕我不知道 Oracle 的等价物。 (我知道,这不是你要找的东西,但它可能会让你更接近......)

    create table foo (
        bar int
    )
    
    insert into foo
    output inserted.*
    values (1)
    
    update foo
    set bar = bar + 1
    output deleted.*, inserted.*
    
    delete
    from foo
    output deleted.*
    

    我在 Oracle 中只知道 sql%rowcount 变量:Number of rows affected by an UPDATE in PL/SQL

    编辑

    Oracle 确实有一个等价的 RETURNING 子句:http://download.oracle.com/docs/cd/B19306_01/appdev.102/b14261/returninginto_clause.htm

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-07-04
      • 1970-01-01
      • 2012-07-05
      • 1970-01-01
      • 1970-01-01
      • 2019-07-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多