web-dev-qa-db-fra.com

Comment passer des arguments à un script PL / SQL en ligne de commande avec SQLPLUS?

Comment passer des arguments à un script PL/SQL en ligne de commande avec SQLPLUS? Je peux appeler mon script PL/SQL comme ça, mais le script nécessite des arguments pour qu'il réussisse. Comment puis-je exécuter sqlplus.exe pour pouvoir passer des arguments au script?

@ECHO off
// where Host030 is a tnsnames alias to a machine, port, and instance    
sqlplus.exe MYUSER/mypassword@Host030 < refreshDataOnOracle.sql    
pause

J'ai essayé de chercher la réponse, mais je n'ai trouvé aucun "exemple d'argument" n'importe où pour SQLPLUS. Je soupçonne que ce serait une méthode similaire d'utiliser la commande "START" de SQL * Plus?

28
djangofan

Tout d'abord, vous devrez invoquer votre script comme ceci:

sqlplus.exe MYUSER/mypassword@Host030 @refreshDataOnOracle.sql foo bar  

Au lieu de la redirection du système d'exploitation, vous utiliserez le symbole "@" pour indiquer le nom du fichier à exécuter. Vous fournirez également les paramètres de script sur la ligne de commande. Dans le script, vous vous référerez aux paramètres à l'aide de &1, &2 etc.

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

qui se traduira par

update mytable set mycol = 'bar' where myid = 'foo';
43
mustaccio

Si vous souhaitez enregistrer l'exécution de sqlplus, vous pouvez utiliser cette syntaxe:

sqlplus.exe MYUSER/mypassword@Host030 @refreshDataOnOracle.sql foo bar  >> log.log
2
PolyMorph