我必须创建一个包含 2 个字段的集合,然后创建一个具有该集合类型的变量作为参数的过程。如果我只有:
TYPE an_array IS VARRAY(10) OF varchar2(20);
例如列:id,名称;(不知道如何插入它们(。
之后,我必须创建程序,
CREATE OR REPLACE PROCEDURE test_proc (p_array an_array) AS
但是我必须使用我的列来执行此过程。例如,我考虑一个表员工(ID号,名称varchar2(20((;我的程序应该看起来像这样:
CREATE OR REPLACE PROCEDURE test_proc (p_array an_array) AS
CURSOR cs IS select * from employees;
v_row employees%ROWTYPE;
BEGIN
OPEN cs;
LOOP
FETCH cs into v_row ;
EXIT WHEN cs%NOTFOUND;
IF (mod (v_row.id,2 ) = 0 ) then
THE ID FIELD FROM MY COLLETION := v_row.id;
THE NAME FIELD FROM MY COLLECTION := v_row.name;
END LOOP;
CLOSE cs;
END;
'
您可以使用记录集合。
像这样的东西
declare
type TRec is record(
col_1 varchar2(20),
col_2 number);
type TList is table of TRec;
t_l TList := TList();
r_l TRec;
procedure foo(a_par TList, ai_elem int) is
begin
if a_par.Exists(ai_elem) then
dbms_output.put_line('Value at pos ' || ai_elem || ' is :' || a_par(ai_elem)
.col_2);
else
dbms_output.put_line('There is no element in position :' || ai_elem);
end if;
end;
begin
r_l.col_1 := 'abc';
r_l.col_2 := 10;
t_l.Extend;
t_l(t_l.Count) := r_l;
foo(t_l, 1);
foo(t_l, 3);
end;