0

我希望将单个语句中的一组值从表中的一行移动到一个适合迭代的对象中。

我有一张看起来像的桌子;

create table a_table (
field1 varchar2(5),
field2 number(10),
loopnumber1 number(5),
loopString1 varchar2(5);,
loopnumber2 number(5),
loopString2 varchar2(5),
.
.
loopnumber10 number(5),
loopString10 varchar2(5));

我想创建一个类似的内存结构;

type loopStuff is record (loopNumber number(5), loopstring varchar2(5));

type my_rec is record (
field1 varchar2(5),
field2 number(10),
loopVar loopStuff(10));

a_rec a_table%rowtype;
temp_rec my_rec;
begin

select * from a_table into a_rec where field1 = something;
temp_rec = a_rec;
or
select * from a_table into temp_rec where field1 = something;

然后在我的 pl/sql 循环中,我将 temp_rec = 设置为传入记录(行),然后能够在另一个循环中处理 10 对字段。我不知道这在 Oracle、PL/SQL 中是否可行,但我想我会问。

谢谢你的帮助。

4

1 回答 1

0

我认为你想要这样的结构:

CREATE OR REPLACE PACKAGE mytest
AS
   TYPE Loop_Record_Type IS RECORD
   (
      loopnumber   NUMBER (5),
      loopString   VARCHAR2 (5)
   );

   TYPE Loop_Record_Table_Type IS TABLE OF Loop_Record_Type
      INDEX BY BINARY_INTEGER;


   TYPE A_Table_Record IS RECORD
   (
      field1   VARCHAR2 (5),
      field2   NUMBER (10),
      loops    Loop_Record_Table_Type
   );
END mytest;

您可以从Oracle Docs获得有关如何使用集合的更多详细信息

于 2013-10-14T19:31:41.073 回答