Quitter un script de commandes sqlplus si une erreur est retournée lors de l'import d'un fichier
Bonjour,
Je suis nouvellement inscrite sur le forum et espère que mon post ne fera pas doublon.
J'ai parcouru en diagonale les posts à la recherche d'une solution à mon problème et malheureusement je n'ai trouvé aucune solution.
C'est un peu un appel au secours que je lance :cry:
Avant toute chose, je dois préciser que je débute totalement en sqlplus et pl/sql.
J'ai un script test.sql qui contient cela:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
|
SET echo ON
/* ********** 1 - ask for INPUT parameters ********** */
/* Ask to the user if he is sure to launch this script on the selected instance */
ACCEPT confirmLaunchLua CHAR FORMAT 'A1' DEFAULT 'N' PROMPT 'Do you really want to launch this script on &_CONNECT_IDENTIFIER instance? (answer Y for yes or N for No): ';
/* Ask to the user to give the password to allowed the script to connect to the schema */
ACCEPT password CHAR PROMPT 'Can you entered the password which allows to connect to the schema? ' HIDE;
SET head off
SET feed off
/* Get all parameters from properties file */
@properties
connect &schema_name/&password@&_CONNECT_IDENTIFIER
spool ON
Spool spool_functions
@functions
spool OFF |
Dans le fichier properties se trouve la variable schema_name définit comme suit :
DEFINE schema_name='mon_schema'
Et dans le fichier functions j'effectue des tests en PL/SQL et trace dans un fichier en cas d'erreur.
Ce script fonctionne très bien sauf quand je renomme mon fichier properties afin de me générer une erreur et voir comment réagit le script.
Dans ce cas j'ai:
Code:
1 2 3 4 5
|
SQL> @properties
SP2-0310: impossible d'ouvrir le fichier "properties.sql"
SQL> connect &schema_name/&password@&_CONNECT_IDENTIFIER
Entrez une valeur pour schema_name : |
J'aimerai trouver une solution pour que le script test.sql s’arrête quand il ne trouve pas le fichier et me rende la main.
J'ai vu qu'on pouvait utiliser cette commande : WHENEVER OSERROR EXIT
mais je ne souhaite pas quitter l'environnement SQL*Plus en cas d'erreur donc cela ne résout pas mon problème
J'ai bien pensé à faire un test en PL/SQL en tentant d'ouvrir le fichier mais pour cela il faut passer le chemin absolue où se trouve le fichier et cela n'est pas possible car ce script et l'ensemble des fichiers(properties et functions) vont être livrés chez le client et je ne sais absolument pas où ils seront mis. donc il faudrait que je puisse ouvrir le fichier mais avec le chemin relatif et ce n'est apparemment pas possible.
J'espère avoir donné toutes les informations possibles.
Si un maître jedi du SQLPLUS ou PL/SQL pouvait sauvé la vie du jeune padawan que je suis :D
commande SQLPLUS avec conditions
J'ai un script qui contient des commandes SQLPLUS.
Dans ce script :
- je demande à l'utilisateur s'il veut toujours exécuter ce script.
SI OUI
- j'appelle un fichier de properties : @properties
- je vérifie que certaines conditions soient bonnes en appelant un script PL/SQL : @check
- je me connecte à un schema : connect user/pwd@instance
- je crée un spool : spool ON, spool mon_spool
- j'exécute un fichier de requetes SQL : @sql_script
- je ferme le spool : spool OFF
SI NON
il ne se passe rien
Ce qui est en rouge n'existe pas. Je cherche un moyen propre de ne pas exécuter la suite de ce script si l'utilisateur me répond NON. Tout cela sans quitter Oracle SQL/PLUS.
Est-ce possible?