0

我在关注 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 语句
4

1 回答 1

0

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

于 2013-04-22T06:30:45.733 回答