我正在学习集合并在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;
/
任何想法有什么不对?
答案 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;