| Oracle FAQ | Your Portal to the Oracle Knowledge Grid | |
|  |  | |||
Home -> Community -> Usenet -> c.d.o.misc -> Re: PL/SQL: How use cmd-line param in stored proc. before DECLARE section?
John Haskins wrote:
> 
> Greetings:
> 
> Can anyone tell me how to use a parameter passed to a stored procedure,
> before the DECLARE section?  Every example I've seen uses passed parameters
> within the BEGIN section, but I need to use them before that point...and
> can't figure out how.  Assistance appreciated!
> 
> Here's a sample of the routine:
>  ___________________________________________
> create or replace procedure PROC_TEST is
>    V_SOURCEROW   OUTPUT_TABLE%rowtype;
>    cursor TEMP_CURSOR is
>    select
>       C1,
>       C2
>    from
>       TABLE_100   T1
>    where
>       T1.C2 = '01-JAN-98'
>    ;
> BEGIN
>    FOR v_sourcerow IN temp_cursor LOOP
>       INSERT INTO OUTPUT_TABLE (
>          C1,
>          C2
>          )
>       VALUES (
>          V_SOURCEROW.C1,
>          V_SOURCEROW.C2
>          );
>    END LOOP;
> END PROC_TEST;
>  ___________________________________________
> 
> My goal is to be able to pass the table name to the procedure at runtime.
> So I need to replace the "TABLE_100" with a parameter that is passed into
> the routine. But when I do this, the procedure produces errors when it
> compiles.
> 
> Can anyone point me in the right direction?
> 
> Thanks.
Two separate things here...
procedure my_proc(p_current_date date) is
  v_local_date date := p_current_date;
begin
 ...
end;
2) PL/SQl resolves it references to the DATABASE at compile time. That means you can't use variable table names etc etc since these are sorted out at compile time. There is a package called "DBMS_SQL" which allows you to build an sql string which can then be parsed/executed etc to achieve what you want to do...
Cheers
--
|  |  |