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

Linux Discussion :

[shell][débutante]problème d'execution requete avec sqlplus


Sujet :

Linux

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juin 2003
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 55
    Par défaut [shell][débutante]problème d'execution requete avec sqlplus
    Bonjour,

    je dois dans mon script shell executer une requete de sélection particulière, qui doit me générer les requetes 'alter table' pour activer toutes les contraintes de ma base : voici la requete :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select 'alter table '||table_name||'  enable constraint '||constraint_name||';' from dba_constraints where owner = upper('MA_BASE');
    Je sais que cette requete fonctionne très bien car je l'ai déja executé "à la main" (sans le script shell).

    Mon problème se situe donc lorsque j'essaie d'intégrer cette requete dans mon script. voici le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    requete="select 'alter table '||table_name||'  enable constraint '||constraint_name||';' from dba_constraints where owner = upper('MA_BASE');"
    echo $requete
    resultReq=`sqlplus -silent << Fin
    ${USER}/${PSWD}
    $requete
    Fin`
    echo $resultReq
    quand j'essaie d'executer ce script, voila le résultat qu'il m'affiche dans ma console :
    select 'alter table '||table_name||' enable constraint '||constraint_name||';' from dba_constraints where owner = upper('MA_BASE');

    select 'alter table '||table_name||' enable constraint '||constraint_name||';' from dba_constraints where owner = upper('MA_BASE') rep1 rep2 file1 file2 ERROR at line 1: ORA-00942: table or view does not exist
    rep1 rep2 file1 file2 correspondent aux repertoires et fichiers présents dans mon dossier d'execution de mon script shell.

    Lorsqu'à la place de ma requete "select 'alter table..." je lui mets une simple requete de selection "select * from une_table" tout s'execute normalement. Je suppose donc que mon problème provient des caractères sépciaux de ma requete "|", mais je n'ai aucune idée de comment gérer ce problème. Sauriez comment je dois m'y prendre ?

    Merci d'avance pour votre aide

  2. #2
    Membre éprouvé Avatar de alexrtz
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2003
    Messages
    639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2003
    Messages : 639
    Par défaut
    Citation Envoyé par nounou
    Je suppose donc que mon problème provient des caractères sépciaux de ma requete "|", mais je n'ai aucune idée de comment gérer ce problème. Sauriez comment je dois m'y prendre ?
    Tu peux essayer de mettre des \ devant chaque |.

  3. #3
    Membre averti
    Inscrit en
    Juin 2003
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 55
    Par défaut
    J'avais déja essayé, mais ça ne marche pas....

    SQL> select 'alter table '\|\|table_name\|\|' enable constraint '\|\|constraint_name\|\|';' from dba_constraints where owner = upper('MA_BASE')
    *
    ERROR at line 1:
    ORA-00911: invalid character
    Si vous avez d'autres idées, je suis preneuse car là, je sèche un peu et je ne vois pas du tout comment régler ce problème.
    Merci d'avance

  4. #4
    Membre éprouvé Avatar de alexrtz
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2003
    Messages
    639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2003
    Messages : 639
    Par défaut
    Je viens de voir un autre truc : tu as des guillemets simples comme délimiteurs de chaîne et comme délimiteurs pour des expressions internes.

  5. #5
    Membre averti
    Inscrit en
    Juin 2003
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 55
    Par défaut
    Citation Envoyé par rurouni alex
    Je viens de voir un autre truc : tu as des guillemets simples comme délimiteurs de chaîne et comme délimiteurs pour des expressions internes.
    oui, c'est vrai, tu penses que ça peut poser un problème ? que dois je faire ?

    Merci

  6. #6
    Membre éprouvé Avatar de alexrtz
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2003
    Messages
    639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2003
    Messages : 639
    Par défaut
    Citation Envoyé par nounou
    oui, c'est vrai, tu penses que ça peut poser un problème ?
    Yaisse.

    Citation Envoyé par nounou
    que dois je faire ?
    Echapper les guillemets simples internes avec des antislashs

  7. #7
    Expert confirmé Avatar de frp31
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 5 196
    Par défaut
    Citation Envoyé par nounou
    J'avais déja essayé, mais ça ne marche pas....



    Si vous avez d'autres idées, je suis preneuse car là, je sèche un peu et je ne vois pas du tout comment régler ce problème.
    Merci d'avance
    si ca marche pas deja dans sql plus inutile de tanter quelque chose que ce sot d'autre...

    faut faire les choses dans l'ordre quand meme...

  8. #8
    Membre averti
    Inscrit en
    Juin 2003
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 55
    Par défaut
    Citation Envoyé par frp31
    si ca marche pas deja dans sql plus inutile de tanter quelque chose que ce sot d'autre...

    faut faire les choses dans l'ordre quand meme...
    Citation Envoyé par nounou
    Je sais que cette requete fonctionne très bien car je l'ai déja executé "à la main" (sans le script shell).
    --> c'est à dire directement dans sqlplus. J'ai donc bien fait les choses dans l'ordre ^^ (par contre j'ai pas forcément était super clair)

    Ce qui ne marche pas, c'est quand j'essaie de despecialiser les "|" de ma requete dans mon script shell (d'après le conseil de rurouni alex) --> ça plante, il aime pas les " \ " !!!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème de login administrateur avec sqlplus
    Par tedinho123 dans le forum Oracle
    Réponses: 5
    Dernier message: 10/07/2014, 11h00
  2. Problème de tri requete avec 2 jointures
    Par p_m_g dans le forum Requêtes
    Réponses: 3
    Dernier message: 10/05/2010, 14h57
  3. Réponses: 4
    Dernier message: 05/07/2007, 11h07
  4. [débutante]Problème combobox et requete sql
    Par lilo415 dans le forum Bases de données
    Réponses: 13
    Dernier message: 03/04/2007, 11h11
  5. Problème sur une requete avec champ date
    Par islande dans le forum Access
    Réponses: 2
    Dernier message: 21/09/2006, 19h39

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