Java Mailing List Archive

http://www.dba.5341.com/

Home » Home (12/2007) » oracle l »

RE: How to define a Type with multiple columns ,for bulk fetch

Anthony Molinaro

2004-03-10


Juan,
What version of oracle are you on?
I believe bulk fetch into a composite array is 9i and higher.
this works on 9i:

declare
  type array is table of emp%rowtype index by binary_integer;
  recs array;
begin
  select *
    bulk collect into recs
    from emp;
  dbms_output.put_line( recs.count() );
  recs.delete();
end;
/

declaring the array %rowtype is safe because a select * will be
in the same column sequence as the array structure.
The columns in the select have to be in the same order as in the array.
So, if instead of using %rowtype, make sure the record you define
has the same structure as your underlying table ( or the sequence of
columns in the select ).

if you still have problems, use a record of arrays instead of
array of records:

declare
  type ename_array is table of emp.ename%type index by binary_integer;
  type sal_array  is table of emp.sal%type  index by binary_integer;
  type emp_rec is record ( enames ename_array, sals sal_array );
  recs emp_rec;
begin
  select ename,sal
   bulk collect into recs.enames,recs.sals
   from emp;
  dbms_output.put_line( recs.enames.count() );
  recs := null;
end;
/

hope that helps,
- ant

-----Original Message-----
From:  Juan Cachito Reyes Pacheco [mailto:jreyes@(protected)]
Sent:  Wed 3/10/2004 4:42 PM
To:  oracle-l@(protected)
Cc:  
Subject:  How to define a Type with multiple columns ,for bulk fetch
Hi sorry another question more, how can I define a type with TWO OR MORE
columns
to bulk fetch in this way

DECLARE
TYPE TEST IS TABLE OF VARCHAR2(20);
TEST1 test;
i number := 0;
cursor c is SELECT LQF_CUENTA FROM CTALIQFON;
BEGIN
open c;
loop
fetch c bulk collect into test1;
for i in 1..test1.count loop
dbms_output.put_line(test1(i));
end loop;
exit when c%notfound;
end loop;



For one column I can do this
TYPE TEST IS TABLE OF VARCHAR2(20);

If I use a table I can do this
TABLA TYPE TEST IS TABLE LATABLA%ROWTYPE;

Now if I do something like
TYPE tLiq IS RECORD (
   CTS_CUENTA VARCHAR2(20),
   CTS_MONEDA VARCHAR2(3));

fetch c bulk collect into tLiq, gives error.
pls-00403


Thanks


----------------------------------------------------------------
Please see the official ORACLE-L FAQ: http://www.orafaq.com
----------------------------------------------------------------
To unsubscribe send email to: oracle-l-request@(protected)
put 'unsubscribe' in the subject line.
--
Archives are at http://www.freelists.org/archives/oracle-l/
FAQ is at http://www.freelists.org/help/fom-serve/cache/1.html
-----------------------------------------------------------------



----------------------------------------------------------------
Please see the official ORACLE-L FAQ: http://www.orafaq.com
----------------------------------------------------------------
To unsubscribe send email to: oracle-l-request@(protected)
put 'unsubscribe' in the subject line.
--
Archives are at http://www.freelists.org/archives/oracle-l/
FAQ is at http://www.freelists.org/help/fom-serve/cache/1.html
-----------------------------------------------------------------


©2008 dba.5341.com - Jax Systems, LLC, U.S.A.