我有两个模式s1和s2,我在s2和p2中创建了一个proc p2,我从s1中的表t1中有一个选择查询, 我已经提供了从表 t1 到 s2 的授予选择访问权限,并且也可以从 SQL 开发人员运行相同的过程,在从 Java 应用程序运行时,我收到以下错误。 ORA-06550: 第 1 行,第 7 列: PLS-00201:必须声明标识符“p2” ORA-06550: 第 1 行,第 7 列: PL/SQL:忽略语句
过程 p2 只需选择查询并获取该数据并将该数据作为数组类型发送回,能够从 SQL Developer 中的模式 s2 查询相同的表 t1, 我已经提供了p2执行授予s2的访问权限,仍然没有解决。
我的看法是,
p2
由用户(架构)拥有 s2
p2
上的执行权限授予用户(架构)s1
p2
过程时,您会收到必须声明 p2
的错误p2
s2
,那么 p2
就可以访问s1
(这是我的推测),那么
s1
通过指定其所有者来调用过程。例如,不仅是
p2
,还有 s2.p2
或者,在架构中创建同义词
s1
:
create synonym p2 for s2.p2;