2016-03-30 175 views
0

我有一個Oracle觸發器,它返回錯誤
缺少表達Oracle查詢

其他信息:ORA-00936:缺少表達

在我的蟾蜍它讓我看到下面的線。

EXECUTE IMMEDIATE 'UPDATE TBL_NEWS_TYPE SET FULLNAME='|| newsName ||' WHERE ID = SELECT MAX(ID) FROM TBL_NEWS_TYPE)'; 

在這裏newsName就像newsName VARCHAR2(50)/和ID中INTEGER VARCHAR2變量。

+0

刪除)TBL_NEWS_TYPE後,你應該通過 – Satya

+0

爲什麼你在這裏使用執行立即執行?沒有理由。如果你不得不出於某種奇怪的原因,那麼至少要用參數來使用它。從長遠來看,連接這樣的值會給你帶來麻煩。 e:g:'立即執行'更新tbl_news_type set fullname =:1其中id =(...)'使用newsname;' –

回答

2

試試這個:

EXECUTE IMMEDIATE 'UPDATE TBL_NEWS_TYPE 
        SET FULLNAME='''|| newsName 
        ||''' WHERE ID = (SELECT MAX(ID) FROM TBL_NEWS_TYPE)' 

我看你這裏有兩個問題:

1)你失蹤 '(' 在選擇

2)的開始,我認爲這億韓元沒有把報價標記包裝在newsName中,因爲它是一個字符串。

+0

現在它向我顯示這個例外ORA-06519:檢測到活動自動事務並回滾 – TechGuy

+0

而那就是整個代碼?你確定這是拋出異常的部分嗎? – sagi

+0

啊!得到它我使用PRAGMA AUTONOMOUS_TRANSACTION; ..現在COMMIT失蹤..我認爲,並完美地工作。 – TechGuy