打印关联数组的索引

时间:2015-12-30 06:46:04

标签: oracle plsql oracle11g

我试图打印一个关联数组的键,用于下面显示的简单逻辑

declare
  type std_marks_arr is table of number(10)
        index by BINARY_INTEGER;--
  std_marks std_marks_arr;
  cursor std_id is select student_code from student_master; 
begin
    for i in std_id
    loop
        select sum(marks) into std_marks(i.student_code) from student_marks
        where student_code=i.student_code;
    end loop;
    for i in std_marks.first..std_marks.last
    loop
        dbms_output.put_line(rpad(std_marks(i).key,10,' ')||rpad(std_marks(i),10,' '));
    end loop;
end;`

它给出了一个错误 我使用'Invalid reference to variable 'NUMBER'

key

我知道可以通过其他方式完成,但我必须知道如何在这种情况下打印索引。

1 个答案:

答案 0 :(得分:2)

您的变量std_marks具有关联数组类型作为其类型,它没有属性key(实际上,没有属性 - 它只是一个值数组)。

在您的代码中,i是索引,它将是一个简单的数字,因此您只需使用它:

for i in std_marks.first..std_marks.last
loop
    dbms_output.put_line(rpad(i,10,
    ' ')||rpad(std_marks(i),10,' '));
end loop

你的代码中还有一些其他问题,它会阻止它编译(例如缺少分号)和运行(例如,除非你的学生代码形成一个数字序列没有间隙的系列,你的代码将引发NO_DATA_FOUND,因为你的loop尝试访问从First索引值到Last索引值的所有数组元素,包括间隙)。