Comment puis-je émettre une seule commande à partir de la ligne de commande via sql plus?

En utilisant SQL Plus, vous pouvez exécuter un script avec l’opérateur “@” depuis la ligne de commande, comme dans:

c:\>sqlplus username/password@databasename @"c:\my_script.sql" 

Mais est-il possible d’exécuter une seule commande avec une syntaxe similaire, sans un fichier script complet? Un péché:

 c:\>sqlplus username/password@databasename @execute some_procedure 

Cela m’intéresse parce que je veux écrire un fichier batch qui exécute simplement une commande, sans générer un tas de fichiers “.sql” à deux lignes.

Je suis capable d’exécuter une requête SQL en la dirigeant vers SQL * Plus:

 @echo select count(*) from table; | sqlplus username/password@database 

Donner

 @echo execute some_procedure | sqlplus username/password@databasename 

un essai.

Avez-vous essayé quelque chose comme ça?

 sqlplus username/password@database < "EXECUTE some_proc /" 

Semble comme sous UNIX, vous pouvez faire:

 sqlplus username/password@database < 

Mais je ne suis pas sûr de l’équivalent de Windows.

Pour UNIX (AIX):

 export ORACLE_HOME=/oracleClient/app/oracle/product/version export DBUSER=fooUser export DBPASSWD=fooPW export DBNAME=fooSchema echo "select * from someTable;" | $ORACLE_HOME/bin/sqlplus $DBUSER/$DBPASSWD@$DBNAME 
 sqlplus user/password@sid < sqlfile.sql 

Cela fonctionnera également à partir de la ligne de commande DOS. Dans ce cas, le fichier sqlfile.sql contient le SQL que vous souhaitez exécuter.

 @find /v "@" < %0 | sqlplus -s scott/tiger@orcl & goto :eof select sysdate from dual; 

Voici comment j’ai résolu le problème: