ODI-1228:Task START_JC(过程)在目标ORACLE连接OJC上失败。
由:java.sql.sqlexception:ORA-06502:PL/SQL:numeric or value错误:NULL索引表键值
ORA-06512:at“OJC.JC_master”,第129行
ORA-06512:at“OJC.JC_master”,第689行
ORA-06512:at“OJC.JC_master”导致。
sql代码
PROCEDURE string_to_aa_parameter_type (
p_string VARCHAR2,
p_out_aa_parameter_values IN OUT aa_parameter_type
)
AS
v_start INTEGER := 1;
v_pos INTEGER := 0;
v_counter INTEGER := 0;
v_temp_parameter_name VARCHAR2 (4000);
v_temp_parameter_value VARCHAR2 (4000);
BEGIN
IF p_string IS NULL
THEN
RETURN;
END IF;
-- determine first chuck of string
v_pos := INSTR (p_string, '=', v_start);
-- while there are chunks left, loop
WHILE (v_pos != 0)
LOOP
v_counter := v_counter + 1;
-- create array
IF MOD (v_counter, 2) = 1
THEN
v_temp_parameter_name :=
SUBSTR (p_string, v_start, v_pos - v_start);
v_start := v_pos + 1;
v_pos := INSTR (p_string, ';', v_start);
ELSE
v_temp_parameter_value :=
SUBSTR (p_string, v_start, v_pos - v_start);
p_out_aa_parameter_values (trim(v_temp_parameter_name)) :=
trim(v_temp_parameter_value);
v_start := v_pos + 1;
v_pos := INSTR (p_string, '=', v_start);
END IF;
END LOOP;
-- IN THE FOLLOWING LINE I GET THE ERROR
v_temp_parameter_value := SUBSTR (p_string, v_start);
p_out_aa_parameter_values (trim(v_temp_parameter_name)) :=
trim(v_temp_parameter_value);
END;
有人能帮我弄清楚问题是什么吗?
如果p_string
是一个完全不包含等号的非空值,或者包含任何以等号开头的分号分隔的部分,则会出现错误。它由您指示的行后面的行抛出(如果p_string
有最后一个分号,则为循环内的等效行)。
如果根本没有等号,那么
v_pos := INSTR (p_string, '=', v_start);
给出零,这意味着你根本不经历循环;这意味着当您到达最后一个赋值时v_temp_parameter_name
从未设置过。
v_temp_parameter_name :=
SUBSTR (p_string, v_start, v_pos - v_start);
还没有实际的错误,因此它再次计算v_pos
,并根据是否有结束分号得到零或非零。
如果它是非零,那么它再次循环;如果它为零,它就会退出。无论哪种方式,它都有获得匹配值的最后一次尝试--无论是否将其设置为任何值都无关紧要。但是,当它试图将元素添加到数组中时,名称仍然为null,并且从它命中的两个数组赋值中的任何一个得到错误。
您可以在过程中进行额外的测试和处理,以发现和丢弃空键,但是
程序不是我写的,我得运行它。它应该是语法正确的
因此,您需要找出Java代码传递过程无法处理的值的原因--即为什么发送不完整的键/值对。
我在执行触发器时遇到以下错误: 请说明问题的原因。 编辑 数据类型:
我实现了一个返回clob数据类型的函数,我希望在DBMS输出中打印结果。不幸的是,我得到了ORA-06502:PL/SQL:numeric或value错误,我认为这是由于dbms_output的大小造成的。 这是密码。 这里有一些东西可以帮助您理解这个问题 1)添加了以下内容来设置缓冲区的大小不受限制,但不起作用… 3)我可以通过执行以下操作来解决这个问题,但我认为这不是一个好的解决方案,因为它执
我得到了 ORA-06502:PL/SQL:以下代码中出现数值或值错误:
我做了一些研究,有一个建议可以使用双重 但是现在我得到了ORA-06502/ORA-06512错误: ORA-06502:PL/SQL:erreur numérique ou erreur sur une valeur ORA-06512:àsys.xmltype“,ligne 272 ORA-06512:àligne 1 06502。00000-“PL/SQL:数值或值错误%s” *原因:出现算
正如您所知,由于Oracle11g不支持json,我使用CLOB创建json数据,因为varchar2(32767)大小,但此时我得到了ORA-06502:PL/SQL:numeric或value错误。同时,数据大小为68075。为什么我得到错误,尽管Clob是支持4 gb的数据?
我有一个向CLOB追加字符串的场景。我遇到的问题是,一旦CLOB达到一定大小,如果我试图向CLOB追加更多内容,就会出现ORA-06502:PL/SQL:numeric或value错误。我假设它的大小已经用完了,但我不知道如何克服这个问题(即指定如何使clob变大)。 有人能帮帮我吗。 我就是这样宣布我的衣服的... 然后我像这样插入它.... 谢谢