2016-06-16 15 views
0

私は、トリガーの周り私の頭を取得しようとしているが、私はエラーSQLトリガ文がDBMS_OUTPUTに表示されないのはなぜですか?

を取得しています

エラー(2,4):PL/SQL:SQLステートメントは無視

エラー(2,8): PL/SQL:ORA-00922:欠落しているか、または無効なオプション

次のトリガーの作成:

CREATE TRIGGER TableTrigger 
AFTER UPDATE ON TestTable 
FOR EACH ROW 
BEGIN 
    set serveroutput on format wrapped; 
    DBMS_OUTPUT.put_line('TABLE UPDATED!'); 
END; 

次のテーブルの上に動作します:

CREATE TABLE TestTable 
(
test1 INT, 
test2 INT, 
test3 INT, 
PRIMARY KEY (test1) 
); 

私は何をすべきか分かりません。誰か提案がありますか?

+1

set server output on format wrapped; SQL * Plusコマンドであり、トリガーで何もしません。消して。 – Mottor

+0

@モットーありがとう、私はそれを取り除いた。エラーは消えましたが、テーブルの更新時に 'TABLE UPDATED!'というメッセージが表示されます。まだ表示されません。私は接続のDBMS_OUTPUTを有効にしました。 – phosgene89

+1

SQL * Plusを使用していますか?あなたが書かれている場合は、 "ラップされた書式でサーバ出力を設定する"更新ステートメントの前にSQL * Plusで実行してください。私はそれをテストして働いています。 – Mottor

答えて

0

トリガーでDBMS_OUTPUTを使用することはベストプラクティスではありません。何かが実行されたことを確認するには、ロギングテーブルまたは監査履歴テーブルを作成するか、そのテーブルの更新の監査を設定します。

DBMS_OUTPUTは、SQLPlusまたは他のIDEからPL/SQLプロシージャまたはパッケージを実行する場合に便利です。

異なるバージョンのSQLでは、トリガーからのバッファの出力を表示する場合と表示しない場合があります。

関連する問題