我有一个调用包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
答案 0 :(得分:2)
首先,您无法调用包。包不是可执行实体。它只是程序,函数,包变量等的集合。
如果Entity_Flag
是Validate_Procedure
程序中的局部变量,则无法从外部Validate_Procedure
引用它。在您发布的代码中显示了如何定义Validate_Procedure
过程,但是,您没有声明Entity_Flag
。这可能是疏忽,也可能表明Entity_Flag
根本不是局部变量。也许它是一个包全局变量。如果变量在包规范中定义,则可以在包外引用它,如Call_Package.Entity_Flag
。但是,如果在包体中定义了变量,则只能从包体中定义的另一个PL / SQL块中引用它。