Record和PL/SQL表

--将表zhl_table中的 记录都保存到red_array对象数组中,并输出
create or replace procedure zhl_3 is
  Type red is Record(
    rid   zhl_table.id%type,
    rname zhl_table.name%type);
  Type red_array is table of red index by binary_integer;
  myRed red_array;
  vn    number;
  vnn   number;
begin
  vn := 1;
  for vr in (select * from zhl_table) loop
    myRed(vn).rid := vr.id;
    myRed(vn).rname := vr.name;
    vn := vn + 1;
    --dbms_output.put_line(vr.id);
  end loop;
  --vnn := myRed.First;
  for I in 1 .. myRed.count loop
    dbms_output.put_line(myRed(I).rid || ' ' || myRed(I)
                         .rname);
    --vnn := myRed.next(vnn);
  end loop;
end;

--将表整体赋值给对象数组red_array
create or replace procedure zhl_3 is
  Type red is Record(
    rid   zhl_table.id%type,
    rname zhl_table.name%type);
  Type red_array is table of red index by binary_integer;
  myRed red_array;
  vn    number;
  vnn   number;
begin
  vn := 1;
  for vr in (select * from zhl_table) loop
    myRed(vn) := vr;
    vn := vn + 1;
  end loop;
  for I in 1 .. myRed.count loop
    dbms_output.put_line(myRed(I).rid || ' ' || myRed(I)
                         .rname);
  end loop;
end;

--利用表的索引键id给red_array赋值
create or replace procedure zhl_3 is
  Type red is Record(
    rid   zhl_table.id%type,
    rname zhl_table.name%type);
  Type red_array is table of red index by binary_integer;
  myRed red_array;
  vn    number;
  vnn   number;
begin
  for vr in (select * from zhl_table) loop
    myRed(vr.id) := vr;
  end loop;
  for I in 1 .. myRed.count loop
    dbms_output.put_line(myRed(I).rid || ' ' || myRed(I)
                         .rname);
  end loop;
end;


  --使用主键约束和唯一约束作为索引列和使用%ROWTYPE类型作为可用列
  create or replace procedure zhl_3 is
  Type red is table of zhl_table%rowtype index by binary_integer;
  myRed red;
  vn    zhl_table.id%type;
begin
  for vr in (select * from zhl_table) loop
    myRed(vr.id) := vr;
  end loop;
  for I in 1 .. myRed.count loop
    dbms_output.put_line(myRed(I).id || ' ' || myRed(I).name);
  end loop;
end;

你可能感兴趣的:(sql)