2016-03-30 7 views
0

は、私は、Oracleのトリガーを持っており、それは誤り
不足している表現のOracleクエリ

に追加情報を返します。ORA-00936:欠落している表現

私のヒキガエルでそれは私に以下の行を示しています。 newsNameここで

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

INTEGERでnewsName VARCHAR2(50)及び/ IDなどVARCHAR2変数です。

+0

TBL_NEWS_TYPE後に削除)、あなたはなぜ、あなたはここimmediate'実行 '使用している – Satya

+0

経由すべきですか?理由はありません。そして、あなたがいくつかの奇妙な理由でする必要がある場合は、少なくともそれをパラメータで使用してください。そのような値を連結することは、長期的には問題を起こすことになります。 E、G: '即時実行します。newsnameを使用して '=更新tbl_news_typeセットフルネーム1をID =(...)ここで、';' –

答えて

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

そしてthatsのロールコード全体?これが例外をスローする部分だと確信していますか? – sagi

+0

ああ! PRAGMA AUTONOMOUS_TRANSACTIONを使用しました。 ..今コミットしていません..私はそれを忠告し、完璧に働いています。 – TechGuy