Oracle FAQ Your Portal to the Oracle Knowledge Grid
HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US
 

Home -> Community -> Usenet -> c.d.o.misc -> Re: Variable fieldname in PL/SQL

Re: Variable fieldname in PL/SQL

From: Greg Forestieri <gforestieri9_at_yahoo.com>
Date: 12 Jun 2003 16:45:01 -0700
Message-ID: <6a8cdd95.0306121545.5dad31b3@posting.google.com>


Sybrand Bakker <gooiditweg_at_nospam.demon.nl> wrote in message > >
>
> The best solution would be using the copy and paste functionality of
> your editor, or setting up a table with a VARRAY instead of this
> denormalized design. Dynamic sql is support in sql statements only
> there is no dynamic pl/sql
>
>
> Sybrand Bakker, Senior Oracle DBA
>
> To reply remove -verwijderdit from my e-mail address

You can in a greater sense have dynamic plsql - dynamic plsql blocks, that is...we do something like the following...

	IF (task_rec.tpid IS NULL) THEN
            proc_stmt := 'declare s varchar2(240):=null; begin ' ||
            get_rec.proc_name || '(' || to_char(x_project_id) ||
            ','''',''' || x_calling_process ||
            ''',''' || x_calling_place || ''',' ||
to_char(get_rec.amt) ||
            ',' || to_char(get_rec.percent) || ', to_date(''' ||
            x_rev_or_bill_date || '''),' || to_char(get_rec.bea_id) ||
',' ||
            to_char(get_rec.be_id) || ',' || to_char(x_request_id) ||
	    '); end;';
	ELSE
            proc_stmt := 'declare s varchar2(240):=null; begin ' ||
            get_rec.proc_name || '(' || to_char(x_project_id) ||
            ',' || task_rec.tpid || ',''' || x_calling_process ||
            ''',''' || x_calling_place || ''',' ||
to_char(get_rec.amt) ||
            ',' || to_char(get_rec.percent) || ', to_date(''' ||
            x_rev_or_bill_date || '''),' || to_char(get_rec.bea_id) ||
',' ||
            to_char(get_rec.be_id) || ',' || to_char(x_request_id) ||
            '); end;';
	END IF;

        x_error_message := 'Error during parsing the dynamic PL/SQL.';
        dbms_sql.parse(c, proc_stmt, dbms_sql.native);

        x_error_message := 'Error during executing the dynamic
PL/SQL.';
        row_processed := dbms_sql.execute(c);

Kind of like that. We have taken to calling it dynamic plsql around here, after the subject on page 9-7 of the 815 plsql fund manual.

Good luck,
Greg Received on Thu Jun 12 2003 - 18:45:01 CDT

Original text of this message

HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US