关联数组-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;
我在 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;