首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >PLSQL - install交替工作

PLSQL - install交替工作
EN

Stack Overflow用户
提问于 2012-09-09 09:45:00
回答 1查看 65关注 0票数 0

我有一个sql脚本文件,我用它来安装表、触发器、序列,最后是一个包。该包使用由sql脚本文件创建的表。包被指定为在应用程序中发生事件时运行,即包在应用程序触发器被触发时运行。

包所做的全部工作就是在临时表中执行批量select insert。这就是它所做的一切。

现在,问题是当我第一次执行全新安装时,包被触发并运行,但没有将数据插入到临时表中。但是,当下一个事件发生时,将触发包,并将数据插入到临时稳定中,并继续正常运行。所以一开始我认为这可能是一个初始化错误。

但是,当我删除sql脚本文件创建的所有对象(包括包)并重新运行sql脚本文件时,包在第一个事件本身发生时工作正常,并继续正常工作。

所以这不可能是一个初始化错误。

但又一次(就因为我失去理智了)我丢弃了所有东西并重新运行脚本文件,我发现了我第一次注意到的相同行为。然后我再次放下所有东西,重新运行脚本文件,它第一次运行得很好。

我不知道为什么它交替工作,这太奇怪了。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-09-09 09:58:18

我猜代码处于无效(未编译)状态。在表上创建触发器,该触发器调用尚未创建的包。然后创建包。第一次运行后,服务器会自动重新编译触发器代码。在创建脚本中,在创建所有对象之后,运行脚本来编译无效对象(ALTER <object> COMPILE)。

通过检查以下各项,验证情况是否属实:

代码语言:javascript
运行
复制
SELECT object_type, object_name
  FROM all_objects
  WHERE status = 'INVALID'

在创建之后,但在事件触发之前。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12335913

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档