En utilisant SQL Plus, vous pouvez exécuter un script avec l'opérateur "@" à partir de la ligne de commande, comme dans:
c:\>sqlplus username/password@databasename @"c:\my_script.sql"
Mais est-il possible d'exécuter simplement une commande unique avec une syntaxe similaire, sans un fichier script séparé? 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" sur deux lignes.
Je peux exécuter une requête SQL en la redirigeant 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 /"
On dirait que sous UNIX, vous pouvez faire:
sqlplus username/password@database <<EOF
EXECUTE some_proc;
EXIT;
EOF
Mais je ne sais pas quel serait 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.