我需要使用pl / sql将varchar转换为数组,但是当我使用SUBSTR函数时,我收到此错误:
错误报告 - ORA-06550:第12行,第3栏: PLS-00330:无效使用类型名称或子类型名称 ORA-06550:第12行,第3栏: PL / SQL:语句被忽略 06550. 00000 - "行%s,列%s:\ n%s" *原因:通常是PL / SQL编译错误。
这是我的代码:
SET SERVEROUTPUT ON;
DECLARE
v_string varchar2(20) := 'hello';
type array_string is varray(5) of varchar2(10);
v_length number;
cnt number;
v_char char(1);
BEGIN
v_length := length(v_string);
while (cnt < v_length)
loop
v_char := SUBSTR(v_string, cnt, 1);
array_string(cnt) := v_char;
cnt := cnt + 1;
end loop;
END;
当我(部分)键入&#39; SUBSTR&#39;它自动完成到SUBSTR(SQLERRM,1,64)所以它应该知道命令,对吧?
我在做错了什么?我是pl / sql的新手的问候,
答案 0 :(得分:1)
在cnt
中使用变量substr
之前,您必须初始化变量array_string(cnt)
您必须在extend
中使用变量名称而不是类型名称
在为其写入新值之前,您必须{{1}}您的varray。
答案 1 :(得分:0)
在oracle环境中,varrays的起始索引始终为1.
你的cnt
从0开始。所以在第一次执行循环期间,
a_string(cnt) := v_char;
cnt为0。
将cnt初始化为1,然后运行
的循环while (cnt < 5)
这将删除您获得的错误