java调用oracle存储过程到execute()就卡住了?debug看了一下就是走到ex...
1、那说明你的存储过程没有返回结果啊,你得首先保证你得过程在pl/sql中有效率的执行为前提。
2、从报错看是字符串索引超出范围,需要看存储过程的执行结果。可以在sqlplus中执行exec PKG_I_DFXM.PRC_I_NBBPCF(你的参数)看下结果。
3、执行 procedure 的时候,可能需要excute权限。或者EXCUTE ANY PROCEDURE 权限。
oracle存储过程为什么一编译就挂死,是锁住了吗?是不是跟表一样有锁的...
你怎么查的锁?v$locked_object?dba_ddl_locks查了没,可能是ddl的锁,如果不能编译,一编译就死,也可能是ddl的锁导致的,以前碰到过。如果能找到锁,那就简单了。
在对数据的增、删、改操作时,有时会发现一直操作不成功,原因可能是表被锁死;或者存储过程无法编译。
定义存储过程时不应该在第二行里插入大小,即应该写成(id in varchar2)。在存储过程内的参数只能指定参数类型;不能指定长度或者精度。如果你想精确定位一个精度,那么就在as下定义一个变量,此时可以定义变量长度。
无效状态有两种可能,一种是你的存储过程编辑没有成功,创建了,但里面有语法错误。 还有一种是存储过程使用的表有结构上的改变,需要重新编译一下。 你重新编译一下,如果不成功,就是有语法问题,你需要修改存储过程。
第一:存储过程因为SQL语句已经预编绎过了,因此运行的速度比较快。第二:存储过程可接受参数、输出参数、返回单个或多个结果集及返回值。向程序返回错误原因。第三:存储过程运行比较稳定,不会有太多的错误。
plsql编译存储过程卡死
存储过程中是否有 LOOP ?如果有 的在end loop 添加 EXIT WHEN 游标名%NOTFOUND (意思是如果没有这个游标,就跳出)没有loop 的话 手动停止掉当前的存储过程吧。
可能是包正在被编译,或者正在被执行。你查下v$locked_object看本session是否被其他session阻塞了。
大部分的原因是死锁了,有别的窗口,或者别的访问者在对你现在进行操作的数据记录进行了修改或删除。
引用的对象发生变化。plsql搜索存储过程没反应是引用的对象发生变化。pl/sql不仅允许嵌入sql语言,还可以定义变量和常量,允许使用条件语句和循环语句,允许使用例外处理各种错误。
有可能的问题:你的电脑配置跟不上。显卡驱动需要更新。软件冲突。当前有占用高资源内存的软件运行,如迅雷下载。
oracle存储过程用FOR..LOOP循环插入8万条记录,运行后发现ORACLE卡死。但...
应该是回滚段设置得不够,建议处理1千条就提交一次。
感觉对日期的处理问题,你将日期类型转换为字符串类型再比较,这里不建议转,直接比较吧。
使用游标的时候一定要控制跳出循环的条件,每个循环结束记得fetch下一跳数据,不然就会无限循环。
在表account中循环插入数据,id从1001到1005。createorreplaceproceduretestis--存储过程,名称为test。v_idint;--声明变量。begin。v_id:=1001;--ACCOUNT_ID从1001插到1005。whilev_id=1005--设置插入的次数。loop。
查询锁的SQL是什么类型。是其他程序正在运行没有提交导致还是死锁。如果是死锁结束进程即可。如果是其他程序的锁,等待提交即可。
这种情况属于插入数据后,没有提交(commit),导致表被锁,所以需要进行提交(commit)或者回滚(rollback)操作。如果当前session已关闭,可通过如下方法杀掉进程。
关于oracle存储过程卡死和oracle存储过程卡住了的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。