2016-07-27 8 views
0

私はPLSQLプログラミングの新機能ですので、このような一般的な問題に直面しています。パッケージPLSQLに既存の関数を追加

私はいくつかのスタンドアロン関数(Oracle PLSQL関数)を開発しており、それらを同じパッケージの下にグループ化したいと考えています。

だから私は、新しいパッケージを作成したが、私は次の何をすべきかについていくつか質問がある:

  1. は私のパッケージに直接機能をリンクするすべての可能な方法はありますか?私はそうは思わないが、おそらく...
  2. 外部関数と同じ方法でパッケージ内の関数の名前を付けることができますか、スコープに問題がありますか?

ありがとうございました。 Marcello

答えて

3

スタンドアロン機能をパッケージにリンクすることはできません。単に機能のコードをパッケージ本体にコピーし、機能仕様をパッケージ仕様にコピーするだけで済みます。例えば

お持ちの場合:

create or replace function my_function 
    return number 
is 
begin 
    return 42; 
end; 

...そしてあなたは、このようなパッケージにそれをコピーすることができます:あなたがそれらを与えることができ

create or replace package my_package is 
    function my_function 
     return number; 
end; 

create or replace package body my_package is 
    function my_function 
     return number 
    is 
    begin 
     return 42; 
    end; 
end; 

スタンドアローン機能と同じ名前で、何の問題もありません。パッケージ内のこれらの機能のいずれかを無資格(my_function)にすると、パッケージのバージョンが呼び出されます。パッケージからスタンドアロン関数を呼び出す場合は、スキーマ接頭辞:my_schmea.my_functionを追加する必要があります。しかし、うまくいけばそれをやりたいとは思わないでしょう!

関連する問題