本篇目录:
- 1、oracle存储过程中update语句一直在执行中,无法更新完成
- 2、oracle存储过程为什么一编译就挂死,是锁住了吗?是不是跟表一样有锁的...
- 3、oracle存储过程插入一条数据,运行之后,数据不能插入
oracle存储过程中update语句一直在执行中,无法更新完成
1、改成 update tmp_tableA a set(a.xxx,a.xxxx) =(select b.xxx,b.xxx from tableB b where a.phone_no=b.phone_no and rownum=1)where a.phone=v_date.phone_no ,确认一下是不是只对应出一条。
2、无效状态有两种可能,一种是你的存储过程编辑没有成功,创建了,但里面有语法错误。 还有一种是存储过程使用的表有结构上的改变,需要重新编译一下。 你重新编译一下,如果不成功,就是有语法问题,你需要修改存储过程。
3、没有看到你的事务呀! 既然你没使用hibernate,那你这里就应该处理自己的事务,即使hibernate,也要注意事务的管理。
4、其实二楼写的最简单,但对于新手,最好别那么写,至于1楼,如果数据不是很多,没必要搞个游标。
oracle存储过程为什么一编译就挂死,是锁住了吗?是不是跟表一样有锁的...
你怎么查的锁?v$locked_object?dba_ddl_locks查了没,可能是ddl的锁,如果不能编译,一编译就死,也可能是ddl的锁导致的,以前碰到过。如果能找到锁,那就简单了。
在对数据的增、删、改操作时,有时会发现一直操作不成功,原因可能是表被锁死;或者存储过程无法编译。
一种是你的存储过程编辑没有成功,创建了,但里面有语法错误。还有一种是存储过程使用的表有结构上的改变,需要重新编译一下。解决方法如下:重新编译一下,如果不成功,就是有语法问题,你需要修改存储过程。
oracle存储过程插入一条数据,运行之后,数据不能插入
1、这种情况属于插入数据后,没有提交(commit),导致表被锁,所以需要进行提交(commit)或者回滚(rollback)操作。如果当前session已关闭,可通过如下方法杀掉进程。
2、如果在插入后并且未提交的的情况下新开一个session查询的话,你是查不到刚插入的数据,这跟Oracle的隔离性有关,但是在当前session是能够查到的,在commit之后,其它session就能查到了(持久性)。
3、这段代码应该是2部分 ,--上面是存储过程 --的下面是实行存储过程的语句,你这种写法类似于SQLSever的写法,在Oracle的有可能执行不下去。把这两段代码放在两个窗体里执行分开执行,就不会出错了。
4、你定义的是data类型,而你输入的却是字符型。你当然不能插入了。我以前做的类似的东西,也是碰到过类似问题。
5、这个可能是需要使用 Oracle 的 自治事务 的处理机制了。也就是 如果 向t_test插入数据,如果插入失败 , 那么 插入 t_test 的数据就回滚掉了。但是插入 t_state 又需要是提交的。
到此,以上就是小编对于oracle 存储过程写法的问题就介绍到这了,希望介绍的几点解答对大家有用,有任何问题和不懂的,欢迎各位老师在评论区讨论,给我留言。