oracle - 选择查询中的 PL/SQL 存储错误

标签 oracle plsql cursor oracle11g

我有以下光标定义

cMultiplier     NUMBER := 100000000000000000 ;
CURSOR CR_TABLE1 IS 
SELECT to_char((COL_ID * cMultiplier) + SEQ,'0999999999999999999') "NEW_COL" 
FROM TABLE1;

然后该游标将被获取为

FETCH CR_TABLE1 
BULK COLLECT INTO AR_TABLE1 LIMIT I_BULK_LIMIT;
EXIT WHEN AR_TABLE1.COUNT = 0;

其中 AR_TABLE1 的类型为

TYPE T_TABLE1 IS TABLE OF CR_TABLE1%ROWTYPE;
AR_TABLE1 T_TABLE1;

对于所有情况,COL_ID 的测试值为 1SEQ 的测试值为 1234567654322 ( 13 位数字)。该值从长度为 19 开始插入到另一个 VARCHAR 类型的表中。

问题是光标一到达FETCH,就会抛出异常,指出ORA-06500: PL/SQL: storage error

我知道它必须使用 select 语句执行某些操作,但我将其转换为字符串(varchar)。为什么我会遇到这个问题?

最佳答案

您要为 I_BULK_LIMIT 分配什么值?

PLS-06500 错误通常意味着应用程序内存不足。因此,您需要查看在程序中分配的变量。但数组使用的内存是最有可能的罪魁祸首。如果当前限制设置为超过几千,您应该考虑设置一个下限。

关于oracle - 选择查询中的 PL/SQL 存储错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8139061/

相关文章:

oracle - 在Oracle中创建表之前检查表是否存在

sql - 在oracle表中自动更改状态

sql - 数组在IN()子句中oracle PLSQL

javascript - 将鼠标悬停在图像上时,如何显示带有 x-y 坐标的十字线光标?

jquery - 奇怪的 CSS 属性行为

sql - 如何动态选择表中空闲的列?

c# - 将 Dapper.net 与 MySql 和 Oracle 结合使用

java - 如何在java中调用Oracle CURSOR返回过程

oracle - PL/SQL 中无法选择 count(*)

c - 如何设置菜单光标位置?