定义一个包含一些列 PL/SQL 的集合



我必须创建一个包含 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;

最新更新