关联数组错误:缺少输出OUT参数

时间:2014-06-25 20:40:44

标签: arrays oracle collections associative

我正在学习集合并在Oracle 11g中尝试关联数组。我正在使用SQL Developer编写和测试下面的代码,我收到的错误是我无法排除故障:

Error Report
Missing IN OUT Parameter at index ::1

我写的代码如下:

---SIMPLE collections EXAMPLE

DECLARE

  TYPE prospect_towns IS TABLE OF VARCHAR2 (25)
    INDEX BY PLS_INTEGER;

a_big_towns prospect_towns;  -- associative array
i PLS_INTEGER := 1;        -- index for the array

v_counter NUMBER;

v_town VARCHAR2(25);

BEGIN

    a_big_towns(1):='Birmingham';
    a_big_towns(2):='London':
    a_big_towns(3):='Manchester';

   -- v_counter := 1;


    FOR i IN 1..a_big_towns.COUNT
    LOOP <<big towns>>

    --v_town := a_big_towns(i);

    DBMS_OUTPUT.PUT_LINE('Inside Loop, town is '||a_big_towns(i));


    i= a_big_towns.next:



    END LOOP<<big towns>>
END;
/

任何想法有什么不对?

1 个答案:

答案 0 :(得分:1)

第二行:

a_big_towns(1):='Birmingham';
a_big_towns(2):='London':
a_big_towns(3):='Manchester';

...最后有一个冒号,而不是分号。这导致解析器将以下a_big_towns解释为绑定变量名称。所以它应该是:

a_big_towns(2):='London';

一旦超过该值,就不需要此行,如果是,则需要:=而不是=,并且最后还有一个冒号而不是分号:

i= a_big_towns.next:

...所以完全删除它。

我不确定标签是否真的在这里添加任何东西,但是如果你有标签,它不需要在最后重复,并且名称中没有空格,所以制作它:

<<big_towns>>
FOR i IN 1..a_big_towns.COUNT LOOP

这需要一个分号:

END LOOP;

This SQL Fiddle编译。