Oracle 9i / Script mit Parameter aufrufen

Daniel_Goeckel

Grünschnabel
Hallo,

und zwar habe ich folgendes Problem:

Ich würde gerne ein SQL-Skript schreiben welches Parameter durch einen Aufruf übergeben bekommen kann.

Folgendes Skript:

Datei: script_user.sql

PHP:
v_toge    varchar(32) ;
v_dept    varchar(32) ;
v_user    varchar(64) ;
v_date    varchar(14) ;

begin

open cur_login ;
loop 
fetch cur_login into v_toge,v_dept,v_user,v_date ;
exit when cur_login%notfound ;

update account set date_acc = v_date 
where  username = v_user 
and    deptname = v_dept 
and    wk_name  = v_toge  ;

end loop ;

close cur_login ;

commit work ;

end ;


In einer weiteren Datei möchte ich ein Batchfile erzeugen, welches das SQL-Skript mit den entspr. 3-Parametern aufruft:

@script_user.sql param1 param2 param3

Geht sowas?


Vielen Dank für eure Hilfe.

Gruß
Daniel
 
Übergabeparameter werden im SQL-Skript mit einem & gekennzeichnet. Dabei ist jedes Auftreten von "&arg" genau ein Parameter.

PHP:
begin
 dbms_output.put_line(&arg1);
end;
/
Enter value for arg1: 45
old   2: dbms_output.put_line(&arg1);
new   2: dbms_output.put_line(45);
45

PL/SQL procedure successfully completed.

Wenn Du ein Argument mehrmals brauchst, mußt Du es per DEFINE einmal setzen, um nicht jedesmal danach gefragt zu werden:

PHP:
DEFINE ARG1 = &ARG1

Danach kannst Du es dann als &ARG1 im Skript benutzen.
 
Hi,

Ob das Aufrufen der Batchfiles mit Parametern funktioniert, kann ich dir leider nicht sagen.
Könnte dir aber eine Alternative nennen:
Nutz doch eigene Funktionen bzw. Prozeduren. Damit ist der Aufruf mit Parametern auf jeden Fall möglich
 
Wenn du die Parameter fest in das Batch Script eintragen willst, ohne danach gefragt zu werden nimm "&1" etc... 1 ist der erste Parameter.

Beispiel:
Mein Script hat folgenden Inhalt
Code:
SELECT &1 FROM &2;

Aufruf:
Code:
oracle@sphinx:~> sqlplus test/test @script1.sql table_name tabs

SQL*Plus: Release 10.2.0.1.0 - Production on Mon Jul 17 23:01:47 2006

Copyright (c) 1982, 2005, Oracle.  All rights reserved.


Verbunden mit:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options

alt   1: select &1 from &2
neu   1: select table_name from tabs

TABLE_NAME
------------------------------
GELD
ZIEHUNGEN
TIPS
WORDS

SQL>
 
Zurück