Which two statements are true regarding a PL/SQL package body? (Choose two.)
A.It cannot be created without a package specification.
B.It cannot invoke subprograms defined in other packages.
C.It can contain only the subprograms defined in the package specification.
D.It can be changed and recompiled without making the package specification invalid.
程序包体:
• 与程序包说明是分开的。因此,可以更改并重新编译程序包体代码,此时不会将与程序包说明相关的其它对象标记为无效。
• 包含程序包说明中定义的子程序的代码。这是负责完成工作的部分。程序包说明表明了如何调用程序包中的子程序;程序包体是代码段。
• 只有在编译了程序包说明之后才能编译程序包体。可以在没有程序包体的情况下创建程序包说明,但不能在没有程序包说明的情况下创建程序包体。
• 通过包装可隐藏代码明细。包装是一个可打乱 PL/SQL 源代码的独立程序,所以可不暴露源代码的情况下传送PL/SQL 应用程序。
A,没有包装说明它不能创建。正确。只有在编译了程序包说明之后才能编译程序包体。可以在没有程序包体的情况下创建程序包说明,但不能在没有程序包说明的情况下创建程序包体。
B,它不能调用其他包中定义的子程序。错误,可以调用。
C,它只能包含包说明中定义的子程序。错误,可以调用不在包装包说明的子程序。
D,它可以改变和重新编译,而不使包装规格无效。正确。与程序包说明是分开的。因此,可以更改并重新编译程序包体代码,此时不会将与程序包说明相关的其它对象标记为无效。