oracle 存储过程中 使用insert into Table (select) 进行数据批量添加 执行后无数据 但单独将上述insert

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle 存储过程中 使用insert into Table (select) 进行数据批量添加 执行后无数据 但单独将上述insert相关的知识,希望对你有一定的参考价值。

语句在PLSQL中执行 又有数据。请教这是什么问题?

存贮过程运行了吗?
不会是只创建了事吧!
参考技术A 检查一下,存储过程成功执行之后是否做了事物处理。就是说在最后有COMMIT;
然后,再试一下。
参考技术B 把执行的过程贴出来,你有提交吗?或者执行是编译时候有警告吗? 参考技术C 存储过程中提交了没有? 参考技术D commit了吗?

oracle 在sql>状态下 执行insert into select 正常 将这一段复制到存储过程中 再EXEC 就很慢

就是说在一般的命令窗口中insert into select 很正常
但是将这段sql写到存储过程中(包含其他内容)
然后执行存储过程就非常慢(注释掉正常)
数据库是有归档的

现采取其他的方式间接解决了

在command下执行快,有可能是你之前执行过select语句,以至于数据库缓存中有现成的语句执行计划分析报告,所以,单句执行时就快一些,但在存储过程中,oracle是整个存储过程一起硬解析的,所以,会慢。
一般来说,既然写了存储过程就不要用这种简写语句,这种写法通用性低,效率也低。
参考技术A 可以描述的清楚一点吗?

以上是关于oracle 存储过程中 使用insert into Table (select) 进行数据批量添加 执行后无数据 但单独将上述insert的主要内容,如果未能解决你的问题,请参考以下文章

oracle 在sql>状态下 执行insert into select 正常 将这一段复制到存储过程中 再EXEC 就很慢

oracle存储过程中临时表的使用,该怎么处理

Oracle存储过程

mysql 存储过程执行insert无法插入数据求助

oracle存储过程中如何对一个变量累加赋值 最好有个例子

Oracle 12 PL/SQL 在触发器中检索存储过程名称