我正在为我的公司编写一些批处理脚本,我在一些历史批处理脚本中看到了以下步骤:
Delete from table where
....声明我不相信你需要在删除后重新编译模式然后导入(插入)。我错了吗?是否有可能DDL语句(例如delete和insert)会使对象无效?
答案 0 :(得分:1)
想不出为什么会发生这种情况的原因,除非你的DML搞乱了数据字典,这听起来是个坏主意......
另据一种想法,也许重新编译会产生需要执行COMMIT的副作用吗?
答案 1 :(得分:1)
我假设您在导入时指定了TABLES参数?如果是这样,那么您处于TABLE模式,这意味着不会导入过程对象,视图等。 imp命令对可由进程导入的任何PL / SQL程序单元执行COMPILE。这可能会使其他依赖对象无效,因此在批处理脚本中重新编译步骤。当然,很多时候这种事情被放入一个基于另一个用作模板的脚本的脚本中,很容易就没必要了。