我对 pl/sql 比较陌生,我正在尝试创建一个包含记录对象的列表,但我不知道如何为列表中的每个项目初始化记录项目中的两个字段。例如:在过程“新项目”中我如何初始化示例(1)?与 example(1).id_std := 整数 和 example(1).procent := 整数 ?谢谢!
这就是我的代码的样子:
set serveroutput on;
CREATE OR REPLACE PACKAGE newExercise IS
TYPE item IS RECORD(
id_std INTEGER,
procent INTEGER
);
TYPE tabel IS VARRAY(5) OF item;
PROCEDURE newItem (example tabel);
example2 tabel := tabel();
end newExercise;
/
CREATE OR REPLACE PACKAGE BODY newExercise IS
PROCEDURE newItem (example tabel) IS
BEGIN
FOR i IN 1..example.LIMIT LOOP
DBMS_OUTPUT.PUT_LINE(example(i));
end loop;
end newItem;
end newExercise;
/
最佳答案
记录类型用于存储查询结果。所以你可以这样做:
declare
recs newExercise.tabel;
begin
select level, level * 0.25
bulk collect into recs
from dual
connect by level <= 5;
newExercise.newItem (recs);
end;
/
请注意,VARRAY 不是适合此目的的集合类型,因为并不总是可以预测查询将返回多少行。最好用一下
TYPE tabel IS table OF item;
关于database - 我如何用 pl/sql 中的记录项初始化数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49434478/