- - PR -
PL/SQL
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2006-12-18 15:46
お世話になります。
Oracle10gにて、パッケージを作成しています。 初歩的な質問で恐縮ですが、 あるパッケージA内に、ファンクションAを作成し、 ファンクションA内より、別のパッケージB内のファンクションBを コールする手法について、調査していましたがわかりません。 どなたか教えていただけないでしょうか。 よろしくお願い致します。 | ||||
|
投稿日時: 2006-12-18 18:56
Bのパッケージ(ボディでない)に、関数宣言すれば
Bのパッケージ名.ファンクション名で Aから呼べたと思います。 SELECT文などでファンクションを呼びたいのであれば プラグマを書かないとだめですね。 | ||||
|
投稿日時: 2006-12-19 09:25
お世話になります。ご回答ありがとうございました。 具体的なソースを記述して、 長くなることとは思い恐縮ですが、以下のようになるのでしょうか。 1.PACKAGEにAを以下のように作成。 CREATE OR REPLACE Package ユーザA.Aパッケージ IS FUNCTION 関数AA ( ) Return Boolean; Bパッケージ.関数BB; END Aパッケージ; / 2.PACKAGEにBを以下のように作成。 CREATE OR REPLACE Package ユーザA.Bパッケージ IS FUNCTION 関数BB ( ) Return Boolean; END Bパッケージ; / 3.PACKAGE BODYにAを以下のように作成。 CREATE OR REPLACE PACKAGE BODY Aユーザ.Aパッケージ IS FUNCTION 関数AA ( ) Return Boolean Is Begin 処理 END 関数AA; END Aパッケージ; / CREATE OR REPLACE PACKAGE BODY Aユーザ.Bパッケージ IS FUNCTION 関数BB ( ) Return Boolean Is Begin 処理 END 関数BB; END Bパッケージ; / | ||||
|
投稿日時: 2006-12-19 09:48
> Bのパッケージ(ボディでない)に、関数宣言
できてます。 >あるパッケージA内に、ファンクションAを作成し、 >ファンクションA内より、別のパッケージB内のファンクションBを >コールする ここが理解されてないようですね。 | ||||
|
投稿日時: 2006-12-19 10:10
たびたびすみません。 今、調べていたのですが関数AA内で「CALL」を使用して 関数BBをコールするのでしょうか。 また、「EXECUTE」という関数も発見したのですが、 こちらを使用するのでしょうか。 また、当掲示板に書き込む前にPAKAGEに 関数宣言する処理を入れたのですが、 PLS-00103のエラーがでて、コンパイルが通らない状況です。 もう少し調べてみます。 | ||||
|
投稿日時: 2006-12-19 10:58
CREATE OR REPLACE Package ユーザA.Aパッケージ IS
FUNCTION 関数AA ( ) Return Boolean; Bパッケージ.関数BB; ←これいらない END Aパッケージ; / CREATE OR REPLACE PACKAGE BODY Aユーザ.Aパッケージ IS FUNCTION 関数AA ( ) Return Boolean Is BOOLEAN B := FALSE; Begin B := Bパッケージ.BB; 処理 END 関数AA; END Aパッケージ; / こんな感じでは? | ||||
|
投稿日時: 2006-12-19 11:17
らざるすさん、ご回答ありがとうございました。 そのソースで試したことがあると思うのですが、 そのときはコンパイルエラーになって 別な方法かと思い、Web・参考書で調査していました。 らざるすさんのおっしゃるとおり、 もう一度整理して、落ち着いて記述したところ コンパイルとおりました。 どうもありがとうございました。 ちょっと、焦って記述して凡ミス等気づかなかったんだと思います。 大変助かりました。 お騒がせしてすみませんでした。 |
1