2011-08-08 10 views
2

Oracle用の疑似バージョン管理とリポジトリを実装しようとしています。 考えられるのは、ストアドファンクション/プロシージャが変更された場合、または作成されたグローバルDATABASE トリガが起動されたときに、変更されたオブジェクトの現在のソースを取得して をテーブルに格納する場合です。 だから私は2つのトリガーを使用しています:Oracle AFTER/BEFORE CREATE ON DATABASEトリガー:オブジェクトソースにアクセスする方法

TRIGGER BEFORE_MODIFY before ALTER or CREATE ON DATABASE 
TRIGGER AFTER_MODIFY after ALTER or CREATE ON DATABASE 

すべてがAFTER_MODIFYトリガーがコンパイルされたオブジェクトの古いバージョン(ソース)を見除き、正常に動作します。 私はSYS.SOURCE$.SOURCEからのソースを取得しようとしました。同じ結果を持つdbms_metadata.get_ddl(OBJ_TYPE, OBJ_NAME, OBJ_OWNER)から2番目の試みとして試しました。

「Oracle 10g +ではできません」などのアドバイスや明確な回答を探しています。

create or replace TRIGGER AFTER_MODIFY after CREATE ON hr.SCHEMA 
declare 
    sql_text ora_name_list_t; 
    n number; 
begin 
    n := ora_sql_txt(sql_text); 
    FOR i IN 1..n LOOP 
    dbms_output.put_line(sql_text(i)); 
    END LOOP; 
end; 
/

答えて

0

は、あなただけの新しいコードを取得するためにora_sql_txt使用し提案します。
+0

おかげゲイリー、私を助け、うまく動作します: – Dimus

関連する問題