oracle存储过程连续执行结果不同
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle存储过程连续执行结果不同相关的知识,希望对你有一定的参考价值。
pl/sql里执行存储过程,f8执行后查看结果集,每次都累加.必须把窗口关闭重新测试.
这是pl/sql本来就这样的吗,还是我存储过程写的不对??
存储过程:
http://hi.baidu.com/sordhmbreabivzq/item/a1626cca2873c3ce994aa05b
存储过程是别人写的,我完全不懂,能帮我瞅一眼么??? 是不临时表没清空啥的啊?
麻烦帮忙看下,存储过程完全不懂,上面是连接,谢谢
追答那个存储过程,是有insert这个插入处理的,会导致你数据一直在增加,增加完再查询所以出来的结果就一直增加且重复了。
那个存储过程,是有insert这个插入处理的,会导致你数据一直在增加,增加完再查询所以出来的结果就一直增加且重复了。
追问但是 我该肿么办呢??
追答你为嘛要怎么办呢?如果你只是要查询当前的数据,就去掉那段insert语句,主要是看你自己是什么样的需求,要做什么样的业务,就得按自己的逻辑去做程序。
参考技术A 这肯定不是PL/SQL的原因,具体是什么问题需要分析存储过程本身才知道。追问麻烦帮忙看下,存储过程完全不懂,上面是连接
追答很奇怪,这个存储过程应该是关掉窗口重新测试同样会累加的,除非你在另外执行了什么操作清空了J2131_Z_J213_R_TMP这个表。要做到在J213_R这个表不变的情况下每次执行存储过程的结果一样,需要在存储过程的最前面也就是begin之后,INSERT INTO J2131_Z_J213_R_TMP之前加一行:
truncate table J2131_Z_J213_R_TMP;
是啊,J2131_Z_J213_R_TMP不是一张物理表么,我感觉也很奇怪. 你说的语法好像有点问题:
begin
truncate table J2131_Z_J213_R_TMP
INSERT INTO J2131_Z_J213_R_TMP(
pl/sql提示:
少写了一个分号
本回答被提问者采纳 参考技术B 和plsql没什么关系,和你写的程序以及你要完成的功能有关系。追问麻烦帮忙看下,存储过程完全不懂,上面是连接
oracle存储过程 中把临时表数据 返回结果集
在pl/sql 中 执行存储过程 返回 如上数据,能不能返回的是 这样的数据啊、怎样整
参考技术A 用索引表快一些,然后使用select * from table(存储过程名(参数列表....))输出。 参考技术B 利用游标cursor,然后用java代码,调用存储过程返回返回结果集(resultset)追问存储过程中药返回结果集,必须用游标吗?
追答应该不是吧,可能还可以用索引表吧,
参考技术C 你那个返回到哪?是个表吗?要是表结构一样,直接insert into 表1 select * from 表2;
以上是关于oracle存储过程连续执行结果不同的主要内容,如果未能解决你的问题,请参考以下文章
oracle 存储过程执行动态SQL 返回结果给游标,外部程序获得dataset结果集。