ORA-06508: PL/SQL: 找不到正在调用的程序单元

2024-01-09

我使用的是 oracle 10g 和 toad 11.5。我正在尝试从匿名块调用 api。

如果我添加后重新编译apidbms_output.put_line然后尝试执行匿名块,它显示错误为:

"ORA-06508: PL/SQL: could not find program unit being called".

但是,如果我结束当前会话并打开一个新会话,则匿名块将执行而不会出现错误。

由于这个问题,每次更改 API 时我都必须重新连接会话。 如果可以通过在蟾蜍或数据库级别进行任何配置来解决此问题,任何人都可以提供帮助。


我怀疑您只报告堆栈中的最后一个错误,如下所示:

ORA-04068: existing state of packages has been discarded
ORA-04061: existing state of package body "schema.package" has been invalidated
ORA-04065: not executed, altered or dropped package body "schema.package"
ORA-06508: PL/SQL: could not find program unit being called: "schema.package"

如果是这样,那是因为你的包是有状态的 http://docs.oracle.com/cd/E11882_01/appdev.112/e25519/packages.htm#CJADDABG:

包中的变量、常量和游标的值 声明(在其规范或正文中)包括其包裹 状态。如果 PL/SQL 包声明至少一个变量、常量、 或光标,则包为stateful;否则,就是无国籍的.

当您重新编译时,状态会丢失:

如果实例化的有状态包的主体被重新编译(或者 显式地,使用“ALTER PACKAGE 语句”,或隐式地), 下一次调用包中的子程序会导致 Oracle 数据库 放弃现有的包状态并引发异常 ORA-04068。

PL/SQL 引发异常后,对包的引用会导致 Oracle数据库重新实例化包,即重新初始化 它...

如果你的包有状态,你就无法避免这种情况。我认为真正需要有状态的包的情况相当罕见,因此您应该重新访问在包中(但在函数或过程之外)声明的任何内容,以查看该级别是否确实需要它。由于您使用的是 10g,因此它包括常量,而不仅仅是变量和游标。

但是引用文档中的最后一段意味着下次您在同一会话中引用该包时,您将不会收到错误,并且它将正常工作(直到您再次重新编译)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ORA-06508: PL/SQL: 找不到正在调用的程序单元 的相关文章

随机推荐

  • 从 URL 中提取主机名

    我必须在 sql 中将网站名称修剪为 com 或 co in 示例 假设我的站点地址为 http stackoverflow com questions ask title trim 我需要得到 stackoverflow com 的结果
  • 使用 JLabels 更新图像的正确方法

    我正在创建一个 GUI 并且对 swing 和 awt 相当陌生 我正在尝试创建一个 gui 在启动时将背景设置为图像 然后使用一种方法来创建某种幻灯片 我已经尝试过 并且我不执着于代码 因此我能够接受修订和 或全新概念 编辑 9 15 1
  • 在 dart 中将 `const` 值赋给 `final` 变量的目的是什么? [复制]

    这个问题在这里已经有答案了 所以我正在做第一个例子 https flutter io get started codelab 对于 Flutter 以及以下 步骤4 创建无限滚动的ListView 我遇到了这段代码 class Random
  • 一起使用必需属性和只读属性

    我正在创建一个 HTML5 网络表单 其中一个输入用于地理位置 通过单击按钮 它插入 GPS 坐标 来填充 由于此输入必须是必需的并且必须是只读的 我不希望用户在其中写入自定义数据 因此如何处理这个问题 HTML5不允许使用required
  • HTML/CSS:页面总宽度比内容宽

    我遇到一个奇怪的问题 找不到原因 我有以下网页 http uk translation vocabulary com de german http uk translation vocabulary com de german并且页面的感知
  • 如何根据开始时间和持续时间计算结束时间?

    我正在构建一个事件日历并将开始时间传递给 PHP 格式为 2009 09 25 15 00 00 持续时间也会被传递 其格式可能为 60 分钟或 3 小时 从小时转换为分钟不是问题 如何在已建立的起点上添加时间长度以正确设置结束时间的格式
  • 如何在 swift5 和 Alamofire 5 beta 版本中获取并保存响应?

    我尝试了一些代码 但我的问题仍然没有解决 请帮助我 我是快速代码的新手 let parameters Parameters skey XXXXXX country code 91 mobile XXX004 user role 4 AF r
  • Butterknife 8.4.0 - 未找到 ID 为“android-apt”的插件

    我不断收到错误消息Plugin with id android apt not found 这里出了什么问题 plugins id me tatarka retrolambda version 3 2 5 apply plugin com
  • 带有文本的警报对话框,后跟一个复选框和 2 个按钮

    我需要弹出警报对话框 就像 EULA 屏幕一样 其中将包含描述 EULA 的文本 并带有 不再显示此内容 复选框 最后有 2 个 确定 和 取消 按钮 如何将文本视图和复选框作为警报对话框的一部分 我必须同意 Mudassir 的观点 EU
  • PHP 中的 Response.End

    有没有相当于Response End in PHP exit die flush
  • 未找到以下类:android.support.v4.widget.DrawerLayout

    我正在 Android Studio 中开发一个项目 其中我必须使用导航抽屉 一切都运行良好 最近 Android Studio 更新到 1 2 版本 突然导航抽屉停止渲染的活动给了我这个错误 我知道这是一个已知错误 以前也发生过这种情况
  • Google 地图 v3 - 客户端上的地图图块缓存?

    我正在为一个项目使用 Google Maps JS API v3 有没有办法让地图在客户端计算机上缓存图块 以便当他们刷新浏览器时 图块不必再次下载 我的许多客户都使用蜂窝连接 重新下载地图需要相当长的时间 Thanks 默认情况下 谷歌地
  • d3.js - 根据标签关系切换 元素上的属性/样式

    StackBlitz 演示 https stackblitz com edit github dzry6q agcn5s file src 2Fapp 2Fdirected graph experiment service ts src 2
  • 测量单位是 F# 独有的吗? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • Symfony 3.3 服务自动配置

    我正在尝试迁移到 symfony 3 3 并使用新功能autowire autoconfigure服务 所以在 services yml 中我有 services defaults autowire true autoconfigure t
  • Java从条码扫描仪获取条码信息

    我一直在寻找这个 所有相关的 Java API 都适用于图像 他们从图像中包含的条形码中获取信息并将条形码打印到图像上 我的问题是如何用Java直接从扫描仪获取条形码 我是否缺少任何 API 来直接从扫描仪读取条形码 或者 我是否需要根据扫
  • 使用 ftp 上传进行 maven 部署:我只想上传 war 文件,但正在上传更多文件

    我完全按照此处指定的说明进行操作 http maven apache org plugins maven deploy plugin examples deploy ftp html http maven apache org plugin
  • 如何向JavaFX应用程序传递参数?

    我正在运行我的 JavaFX 应用程序 如下所示 public class MainEntry public static void main String args Controller controller new Controller
  • C程序输出数组最大元素和数组最大元素的索引

    我正在上我的第一堂编程课 其中大部分是自学的 所以请耐心听我说 用户输入数字后 例如 10 20 100 3 4 应该有一个输出可供读取 list1 数组中最大元素的索引是 list1数组中最大元素为100 到目前为止 这是我的代码 我知道
  • ORA-06508: PL/SQL: 找不到正在调用的程序单元

    我使用的是 oracle 10g 和 toad 11 5 我正在尝试从匿名块调用 api 如果我添加后重新编译apidbms output put line然后尝试执行匿名块 它显示错误为 ORA 06508 PL SQL could no