Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 我们可以从另一个包调用包的私有过程吗?我们可以从私有包调用数据库过程吗_Sql_Oracle_Plsql_Plsql Package - Fatal编程技术网

Sql 我们可以从另一个包调用包的私有过程吗?我们可以从私有包调用数据库过程吗

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

调用私有包中的数据库过程

如果通过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 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

如果“数据库过程”指的是不在包中的独立过程,则为“是”-前提是调用方对该过程具有执行权限。无论是使用调用方还是定义方的权限定义过程,都会起作用。请参见

第一部分为“否”,这使其成为包体中的私有过程,但未在规范中声明。你说的“私人套餐”是什么意思?