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: