ORA-06550:在从 java 应用程序执行过程时,必须声明 Proc p1,

问题描述 投票:0回答:1

我有两个模式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的访问权限,仍然没有解决。

java spring oracle plsql database-administration
1个回答
0
投票

我的看法是,

  • 过程
    p2
    由用户(架构)拥有
    s2
  • 您已将
    p2
    上的执行权限授予用户(架构)
    s1
  • 当从 Java 应用程序调用
    p2
    过程时,您会收到必须声明
    p2
    的错误
  • 这意味着您当前登录的模式中不存在(或无法访问)
    p2
  • 因此,您连接到哪个用户?
    • 如果是
      s2
      ,那么
      p2
      就可以访问
    • 如果是
      s1
      (这是我的推测),那么
      • 虽然存在授权 - 程序对
        s1
      • 来说并不“可见”
      • 该怎么办?
        • 通过指定其所有者来调用过程。例如,不仅是

          p2
          ,还有
          s2.p2

        • 或者,在架构中创建同义词

          s1

          create synonym p2 for s2.p2;
          
© www.soinside.com 2019 - 2024. All rights reserved.