0

パッケージCall_Packageを呼び出す関数があります。このパッケージ内には、プロシージャValidate_Procedureがあり、このプロシージャ内には、変数Entity_Flagがあります。

この関数は私のパッケージを次のように呼び出します。

BEGIN
Call_Package(<params>);
END

'Call_Package'には、私のプロシージャValidate_Procedureが含まれています。

Validate_Procedure(<paramA>, <paramB>)

手順の中で、私は通常のように何かをします:

Validate_Procedure(<params>) IS
BEGIN
 IF <paramA> THEN
  Entity_Flag = 1
 Else <paramB> THEN
  Entity_Flag = 2
 END IF
END

私の質問は、次のように、元の関数で手続き型変数を参照できますか?

BEGIN
Call_Package(<params>);
IF Call_Package.Validate_Procedure.Entity_Flag = 2 THEN
   {do stuff}
END IF
END
4

1 に答える 1

2

まず、パッケージを呼び出すことはできません。パッケージは実行可能エンティティではありません。これは、単にプロシージャ、関数、パッケージ変数などのコレクションです。

Entity_Flagがプロシージャ内のローカル変数である場合Validate_Procedure、外部から参照することはできませんValidate_Procedure。ただし、プロシージャがどのように定義されているかを示す投稿したコードValidate_Procedureでは、を宣言していませんEntity_Flag。これは見落としであるかEntity_Flag、ローカル変数ではないことを示している可能性があります。おそらくそれはパッケージグローバル変数です。変数がパッケージ仕様で定義されている場合は、パッケージの外部でとして参照できますCall_Package.Entity_Flag。ただし、変数がパッケージ本体で定義されている場合は、パッケージ本体で定義されている別のPL/SQLブロック内からのみ参照できます。

于 2012-11-08T23:15:14.370 に答える