2013-09-04 1 views
21

Come posso passare argomenti a uno script PL/SQL sulla riga di comando con SQLPLUS? Posso chiamare il mio script PL/SQL in questo modo, ma lo script richiede degli argomenti perché possa avere successo. Come posso eseguire sqlplus.exe in modo che possa passare argomenti allo script?Come posso passare argomenti a uno script PL/SQL sulla riga di comando con SQLPLUS?

@ECHO off 
// where HOST030 is a tnsnames alias to a machine, port, and instance  
sqlplus.exe MYUSER/[email protected] < refreshDataOnOracle.sql  
pause 

Ho cercato di cercare la risposta ma non ho trovato un "argomento di esempio" per SQLPLUS. Sospetto che sarebbe un metodo simile di usare il comando "START" di SQL * Plus?

risposta

32

In primo luogo, è necessario richiamare lo script in questo modo:

sqlplus.exe MYUSER/[email protected] @refreshDataOnOracle.sql foo bar 

Invece del reindirizzamento sistema operativo che verrà utilizzato il simbolo "@" per indicare il nome del file da eseguire. Fornirai anche i parametri dello script sulla riga di comando. Nello script si riferiscono ai parametri utilizzando &1, &2 ecc

update mytable set mycol = '&2' where myid = '&1'; 

che si tradurrà in

update mytable set mycol = 'bar' where myid = 'foo'; 
+0

Grazie. Era così. Sembra che il carattere '@' sia un alias per "START". – djangofan

+1

Come si indirizza l'output a un file di registro? – ChadD

+2

@ChadD vedere 'sqlplus' [' spool'] (http://docs.oracle.com/cd/E11882_01/server.112/e16604/ch_twelve043.htm#i2683777) -comando. – user272735

1

Se si desidera registrare la corsa di sqlplus, è possibile utilizzare la seguente sintassi:

sqlplus.exe MYUSER/[email protected] @refreshDataOnOracle.sql foo bar >> log.log