2013-04-22 20 views
0

我在跟蹤pl/sql匿名時遇到問題。這裏是我的pl/sql塊的縮小版本..我的代碼有什麼問題?多個Update語句的匿名塊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; 
/

這裏的輸出我得到

 
update MYTABLE set GID = '12345' where MYTABLE.COLUMN1=456456 and MYTABLE.PARTY0 and MYTABLE.EXPIRY = to_date('17/05/2013','DD/MM/YYYY') 
     * 
ERROR at line 2: 
ORA-06550: line 2, column 8: 
PL/SQL: ORA-06552: PL/SQL: Compilation unit analysis terminated 
ORA-06553: PLS-488: invalid variable declaration: object 'TIMESTAMP' must be a type or subtype 
ORA-06550: line 2, column 1: 
PL/SQL: SQL Statement ignored 

回答

0

根據你報告我猜測的地方在你的PL/SQL塊(這是不存在於你的問題)的錯誤你指的是名爲TIMESTAMP的表列。不幸的是,這是Oracle中的一個保留字,因爲它是列數據類型。我建議您將該列重命名爲DATE_CREATED,然後查看您的代碼是否已編譯。