【问题标题】:Delete row with confirmation from Oracle table从 Oracle 表中删除带有确认的行
【发布时间】:2015-07-27 08:59:02
【问题描述】:

我有这个用于删除用户的 SQL 查询。

DELETE FROM USERS WHERE USERNAME = ?

问题是我不知道是否有任何行成功删除。我总是在最后取得成功。

有什么方法可以让 Oracle 确认我的 Java 代码中的行已被删除?

【问题讨论】:

  • 如果命令完成且没有错误,则删除行(如果有)。检查错误代码。
  • 不确定,但 PreparedStatement.executeUpdate() 返回 DML 的有效行数。你可以试试。
  • 这也适用于删除:stackoverflow.com/questions/2571915/…
  • Oracle 是否支持 GET DIAGNOSTICS ... ROW_COUNT?

标签: java sql oracle oracle11g oracle10g


【解决方案1】:

PreparedStatement 的executeUpdate() 方法为您提供删除的行数。如果查询没有删除任何行,则为0。我认为这是最简单的解决方案。

如果您需要知道哪些行已被删除,您可以使用“Returning”子句,这将使您删除行。

问候

【讨论】:

    【解决方案2】:

    您可以使用 SQL%ROWCOUNT。它是一个隐式游标,给出受 SQL 语句影响的行数

    declare
    begin
    DELETE FROM USERS WHERE USERNAME = ?;
    dbms_output.put_line('Total Deleted:' ||sql%rowcount);
    end;
    

    这将为您提供删除的行数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-10
      • 1970-01-01
      • 1970-01-01
      • 2018-05-24
      • 2014-06-13
      相关资源
      最近更新 更多