【问题标题】:Error occurs with anonymous block pl/sql for multiple Update statement多个更新语句的匿名块 pl/sql 发生错误
【发布时间】:2013-04-22 04:12:45
【问题描述】:

我在关注 pl/sql 匿名时遇到问题。这是我的 pl/sql 块的缩小版本。我的代码有什么问题?

WHENEVER SQLERROR EXIT sql.sqlcode ROLLBACK

WHENEVER oserror EXIT FAILURE ROLLBACK
SET SERVEROUTPUT ON
SET ECHO OFF
SET DEFINE OFF
SET LINESIZE 120
SET AUTOCOMMIT OFF
BEGIN
update MYTABLE set GID = '12345' where MYTABLE.COLUMN1=456456 and MYTABLE.PARTY<>0 and MYTABLE.EXPIRY = to_date('17/05/2013','DD/MM/YYYY')
AND EXISTS (SELECT PARTIES.LABEL
        FROM PARTIES 
        WHERE PARTIES.m_id = MYTABLE.PARTY_ID and PARTIES.LABEL = 'PARTY_NAME');    
dbms_output.put_line( 'Rows Updated : ' || to_char(sql%rowcount));
END;
/

这是我得到的输出

更新 MYTABLE 设置 GID = '12345' 其中 MYTABLE.COLUMN1=456456 和 MYTABLE.PARTY0 和 MYTABLE.EXPIRY = to_date('17/05/2013','DD/MM/YYYY') * 第 2 行的错误: ORA-06550:第 2 行,第 8 列: PL/SQL: ORA-06552: PL/SQL: 编译单元分析终止 ORA-06553: PLS-488: 无效的变量声明: 对象 'TIMESTAMP' 必须是类型或子类型 ORA-06550:第 2 行,第 1 列: PL/SQL:忽略 SQL 语句

【问题讨论】:

    标签: sql plsql sql-update


    【解决方案1】:

    根据您报告的错误,我猜测您的 PL/SQL 块中的某处(您的问题中不存在)您指的是名为 TIMESTAMP 的表列。不幸的是,这是 Oracle 中的保留字,因为它是列数据类型。我建议您将该列重命名为 DATE_CREATED 之类的名称,然后查看您的代码是否可以编译。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-09-30
      • 2017-09-02
      • 2023-04-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-05
      • 1970-01-01
      相关资源
      最近更新 更多