Sql 我们可以从另一个包调用包的私有过程吗?我们可以从私有包调用数据库过程吗
调用私有包中的数据库过程如果通过private,您指的是在包体中定义的过程,而不是在头中公开的过程,则不是。其他包将无法看到该过程Sql 我们可以从另一个包调用包的私有过程吗?我们可以从私有包调用数据库过程吗,sql,oracle,plsql,plsql-package,Sql,Oracle,Plsql,Plsql Package,调用私有包中的数据库过程如果通过private,您指的是在包体中定义的过程,而不是在头中公开的过程,则不是。其他包将无法看到该过程 SQL> CREATE OR REPLACE PACKAGE foo AS END; -- No "public" procedures/functions 2 / Package FOO compiled SQL> CREATE OR REPLACE PACKAGE BODY foo 2 AS 3 PROCEDURE priv
SQL> CREATE OR REPLACE PACKAGE foo AS END; -- No "public" procedures/functions
2 /
Package FOO compiled
SQL> CREATE OR REPLACE PACKAGE BODY foo
2 AS
3 PROCEDURE priv IS BEGIN NULL; END; -- "Private" procedure
4 END;
5 /
Package Body FOO compiled
SQL> CREATE OR REPLACE PACKAGE other_pkg
2 AS
3 PROCEDURE call_priv_proc;
4 END;
5 /
Package OTHER_PKG compiled
SQL> CREATE OR REPLACE PACKAGE BODY other_pkg
2 AS
3 PROCEDURE call_priv_proc
4 IS
5 BEGIN
6 foo.priv;
7 END;
8 END;
9 /
Package Body OTHER_PKG compiled
LINE/COL ERROR
--------- -------------------------------------------------------------
6/5 PL/SQL: Statement ignored
6/9 PLS-00302: component 'PRIV' must be declared
Errors: check compiler log
如果“数据库过程”指的是不在包中的独立过程,则为“是”-前提是调用方对该过程具有执行权限。无论是使用调用方还是定义方的权限定义过程,都会起作用。请参见第一部分为“否”,这使其成为包体中的私有过程,但未在规范中声明。你说的“私人套餐”是什么意思?