关联数组-plsql

associative array -plsql

我在 PLSQL 中遇到关联数组问题。当我 运行 一个游标并尝试将游标中的每一行插入一个变量(声明为 cursor%rowtype;游标中的每一行包含名字和姓氏),然后显示输出,有用。当我尝试做同样的事情但我使用关联数组而不是变量时,它不起作用。

所以这行得通

declare
   cursor cur is select last_name, first_name from employees;
   v_table_emp cur%rowtype;
   begin
   for item in cur
   loop
   v_table_emp:=item;
   dbms_output.put_line(v_table_emp.last_name );
   end loop;
   end;

而这不

declare
   cursor cur is select last_name, first_name from employees;
   v_table_emp cur%rowtype;
   type table_emp is table of v_table_emp;
   c_table_emp table_emp;
   begin
   for item in cur
   loop
   v_table_emp:=item;
   c_table_emp:=v_table_emp;
   dbms_output.put_line(c_table_emp.last_name );
   end loop;
   end;

因此,如果您能帮助我,我将不胜感激。谢谢!

您尝试使用的不是关联数组,您遇到了一些问题; 假设您要定义一个游标,将其提取到一个变量中,然后扫描结果,这是一个工作示例:

DECLARE
    CURSOR cur
    IS
        SELECT last_name, first_name FROM employees;

    TYPE tTableEmp IS TABLE OF cur%ROWTYPE;
    vTableEmp tTableEmp;
BEGIN
    open cur;
    fetch cur bulk collect into vTableEMp;
    close cur;
    
    if vTableEmp.count != 0 then
        for i in 1 .. vTableEMp.count loop
            DBMS_OUTPUT.put_line (vTableEMp(i).last_name);
        end loop;
    else
        DBMS_OUTPUT.put_line ('Empty');
    end if;
END;