Re: Looping through column values in a record without specifying

From: Malcolm Dew-Jones <yf110_at_vtn1.victoria.tc.ca>
Date: 5 Mar 2008 14:04:43 -0800
Message-ID: <47cf18fb$1@news.victoria.tc.ca>


DA Morgan (damorgan_at_psoug.org) wrote:
: dananrg_at_yahoo.com wrote:
: > In PL/SQL, is there a way to loop through column values in a record
: > without specifying column names in advance? e.g. like using an index
: > number in an array?
: >
: > The code below will output a value for the column specified; but I've
: > not found a way to create an inner loop and iterate through the record
: > itself.
: >
: > DECLARE
: >
: > cursor cur is
: > select * from my_table;
: >
: > BEGIN
: >
: > for rec in cur
: > loop
: > dbms_output.put_line(rec.my_column);
: > end loop;
: >
: > END;
: >
: > Tried inserting an inner loop something like the following, and it
: > failed:
: >
: > for x in rec
: > loop
: > dbms_output.put_line(x)
: > end loop;
: >
: > ... and it failed:
: >
: > ERROR at line 7:
: > ORA-06550: line 7, column 12:
: > PLS-00456: item 'REC' is not a cursor
: > ORA-06550: line 7, column 3:
: > PL/SQL: Statement ignored
: >
: > So I can't use a RECORD in a FOR IN loop. How can I accomplish what I
: > want to do some other way?
: >
: > Thanks.
: >
: > Dana

: Cursor loops such as in your example have been obsolete since the
: introduction of Oracle 9i.

: BULK COLLECT into an array indexed by binary integer and you can do this
: with ease (Morgan's Library at www.psoug.org).

I am not sure how BULK COLLECT will help him to print out the individual columns without knowing the name of each column. Received on Wed Mar 05 2008 - 16:04:43 CST

Original text of this message