Oracle PL / SQL SUBSTR错误

时间:2014-05-11 17:03:22

标签: plsql substr

我需要使用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的新手

的问候,

2 个答案:

答案 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)

这将删除您获得的错误