web-dev-qa-db-fra.com

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 "@" à 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.

44
JosephStyons

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.

67
Patrick Cuff

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.

15
Eric Petroelje

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
9
javaPlease42
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.

8
tale852150