IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Sql*Plus Oracle Discussion :

Quitter un script de commandes sqlplus si une erreur est retournée lors de l'import d'un fichier


Sujet :

Sql*Plus Oracle

  1. #1
    Nouveau Candidat au Club
    Femme Profil pro
    Développeur Java
    Inscrit en
    Février 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Février 2013
    Messages : 4
    Points : 1
    Points
    1
    Par défaut 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

    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  2. #2
    Membre expérimenté Avatar de ojo77
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Décembre 2010
    Messages
    680
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2010
    Messages : 680
    Points : 1 597
    Points
    1 597
    Par défaut
    Je ne vois à priori pas de solution pour arrêter le script sans sortir de SQL*Plus cependant, concernant la problématique des chemins de fichiers la directive @@ vous permet d'utiliser des chemins relatifs

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SET head off
    SET feed off
     
    /* Get all parameters from properties file */
    @@properties

  3. #3
    Nouveau Candidat au Club
    Femme Profil pro
    Développeur Java
    Inscrit en
    Février 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Février 2013
    Messages : 4
    Points : 1
    Points
    1
    Par défaut Merci
    Merci pour ta réponse

  4. #4
    Nouveau Candidat au Club
    Femme Profil pro
    Développeur Java
    Inscrit en
    Février 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Février 2013
    Messages : 4
    Points : 1
    Points
    1
    Par défaut lecture de fichier spool
    J'ai oublié de préciser que je travaille avec oracle 9.
    Que je vais générer des spools depuis mon script SQLPLUS.
    Ce fichier est généré en local dans le répertoire où je lance mon script.
    J'aimerai savoir si ce fichier pourrait être lu en PL/SQL en oracle 11 car apparemment ça n'est pas possible en oracle 9.

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Février 2007
    Messages
    260
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 260
    Points : 281
    Points
    281
    Par défaut
    Salut,

    Sous Oracle 11 comme Oracle 9 la lecture des fichiers en PlSql est possible avec utl_file.
    Ce package traite des fichiers situés
    - soit dans un répertoire du serveur de base de données pointé par le paramètre utl_file_dir.
    - soit dans un répertoire pointé par un directory. Les directories supportent les lecteurs réseau.

    Dans ton cas je resterais en sqlplus en :
    - Plaçant un fichier de paramétrage un chemin relatif au fichier de commande sql.
    @@properties me semble bien.
    - Indiquant dans ce fichier de paramétrage les répertoires dans lesquels je veux travailler. Tu as le droit de faire un spool &v_monchemin.\&v_monfichier..txt par exemple si tu as définis les deux variables v_monchemin et v_monfichier dans ton fichier properties.

    Pozzo

  6. #6
    Nouveau Candidat au Club
    Femme Profil pro
    Développeur Java
    Inscrit en
    Février 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Février 2013
    Messages : 4
    Points : 1
    Points
    1
    Par défaut 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?

Discussions similaires

  1. Réponses: 1
    Dernier message: 17/02/2014, 16h49
  2. Réponses: 2
    Dernier message: 04/02/2014, 13h18
  3. Réponses: 7
    Dernier message: 04/09/2013, 12h51
  4. Une erreur est survenue lors de l'ouverture de ce document.
    Par slaima15 dans le forum Erreurs - Avertissements
    Réponses: 2
    Dernier message: 20/06/2010, 00h54
  5. Réponses: 1
    Dernier message: 02/06/2008, 20h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo