2015-09-24 20 views
6

C#やJavaなどのプログラミングツールの中には、廃止予定のプロシージャ/ファンクションをマークすることができます。しかし、Oracle PLSQLには、このための機能は組み込まれていません。この機能をサポートする別の方法があるのだろうか。廃止予定のPLSQLプロシージャ/ファンクションのコード

コンパイルされているPL/SQLコードについて、PL/SQLコンパイラの警告が表示されるようにします。 "

96/43 PLW-06005: inlining of call of procedure 'TEST' was done 
+2

私は、おなじみのnありませんよC#でもJavaでもPL/SQLサブルーチンがdeprecatedとマークされたときに何が起こるかを明確にしてください。 – user272735

+0

このオラクルフォーラムスレッドで遭遇しましたか? https://community.oracle.com/thread/2342126 – ozy

+0

@ user272735質問の詳細を追加しました。 –

答えて

4

は、このために新しいpragmaがあり、12.2をリリース。以下のものは廃止することができます。

  • サブプログラム
  • パッケージ
  • 変数
  • 定数
  • タイプ
  • サブタイプ
  • 例外
  • カーソル
を例えば

CREATE OR REPLACE PACKAGE old_package AS 
PRAGMA DEPRECATE(old_package , ’Package old_package has been deprecated in favor of new_package’); 
    PROCEDURE p1; 
    PROCEDURE p2; 
END old_package; 

あなたは廃止しましたものは何でも使って何かをコンパイルしようと誰もがPLW-6022にPLW-6019の範囲内のPL/SQLの警告が表示されます。

alter session set plsql_warnings = 'error:6020'; 
:また

alter session set plsql_warnings = 'enable:(6019,6020,6021,6022)'; 

あなたはエラーとしてこれらの警告を治療するためのセッションを設定することができ、次のようにあなたがコードをコンパイルしようとすると、あなたがそれらを見ることができますように

あなたは、これらの警告を有効にすることができます

または、あなたがエラーを取得するためにそれを使用して誰を作るためにオブジェクト自身を設定することができます。

alter package <package with deprecated stuff> compile plsql_warnings = 'error:6020' reuse settings; 
-1
dbms_output.put_line('This function is deprecated'); 
+0

コンパイル時にdbms_outputは実行されません –

+0

なぜでしょうか:) – clq

+0

dbms_output.put_line isメソッドが実行されたときにのみ "可視"になります。問題は "コンパイル中のPL/SQLコードについての_compiler警告"です。 –

1

これは、Oracleのサポート機能およびPL/SQL言語ではありません。実行開始時に変数をチェックしてコードが減価償却されているかどうかを判断するようなフレームワークを開発しなければならないでしょう。しかし、開発チームがすべて手作業で処理する必要があります。 これはOracleに含まれている機能ではありません。

1

PL/SQL Source Code Control inside the database – After Compile trigger for automatic archivingに基づくカスタムソリューションがあります。

Whenever we compile – create or replace – a PL/SQL object, the CREATE DDL event is fired and we can intercept that event with our own trigger. At that point we have various pieces of information that we can use to insert a new record into the PLSQL_ARCHIVE table.

  • を次のように全体的なプロセスであるトリガがコンパイルされたオブジェクト(キーワード、コメントで )に関する情報を収集します。これらのキーワードの1つは、ヘッダー方法 (デフォルト:false)のdeprecatedです。
  • 次に、トリガーは使用されたメソッドを分析し、非推奨であるかどうかをチェックします。 メソッドが廃止された場合は、warning_tableに保存されます。
  • 警告(微妙な部分)を表示するには、warning_tableとマージするビュー USER_ERRORSを書き換えます。

今、私たちは、オブジェクトがコンパイルされている便利なメッセージがあります。

OPLW-00001: The method SomeDeprecatedMethod is deprecated

注:内部の開発ですので申し訳ありませんが、私はソースコードを共有することはできませんが。

pragma deprecate (deprecated_thing, 'Message to other developers'); 

... deprecated_thingは、任意のPL/SQL識別子です:オラクルで

関連する問題