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 :

Shell unix + Sqlplus


Sujet :

Sql*Plus Oracle

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    110
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 110
    Points : 111
    Points
    111
    Par défaut Shell unix + Sqlplus
    Bonjour,

    je viens de faire un script unix (AIX5) en shell (pourquoi pas )

    ce script fait différent contrôle, qui se passe bien, puis appel un sqlplus comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    	sqlplus /nolog <<eof
    		-- mon code ....
     
    		show errors
    		exit
    eof
    ce qui fonctionne bien

    par contre si j'indente le "eof" de fin, histoire de voir plus clair dans mon script, j'ai l'erreur suivante
    "inst_imp_releve.sh[57]: 0403-057 Erreur de syntaxe à la ligne 60 : `<' sans correspondance."


    j'ai beau chercher, là je ne comprends pas

    évidement ce n'est pas bloquant puisque sans l'indentation ça marche, mais j'aurai bien aimé comprendre.

    Merci

  2. #2
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Points : 4 926
    Points
    4 926
    Par défaut
    l'explication c'est que sans l'indentation ça ne marche pas

    bon, si tu tiens absolument à ton indentation et que tu es prêt à rendre ton code ingérable, tu peux tenter :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if [ 1 = 1 ]
    then
        cat <<'    EOF'
            Hello World
        EOF
    fi

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    110
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 110
    Points : 111
    Points
    111
    Par défaut
    a oui ça marche merci,

    par contre il faut se connecter à l'appel

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
         sqlplus $USERAPPS/$PWDAPPS<<'       eof'
    et non pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
         sqlplus <<'       eof'
               CONNECT $USERAPPS/$PWDAPPS
    c'est fou encore

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    110
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 110
    Points : 111
    Points
    111
    Par défaut
    Citation Envoyé par laurentschneider Voir le message
    l'explication c'est que sans l'indentation ça ne marche pas
    c'est fou

    Citation Envoyé par laurentschneider Voir le message
    que tu es prêt à rendre ton code ingérable, tu peux tenter :
    comment, tu insinue que je m'expose a d'autre problème arggggg



    Merci en tout cas

  5. #5
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Points : 4 926
    Points
    4 926
    Par défaut
    plus élégant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
    # ...
     
        echo "
    		-- mon code ....
     
    		show errors
    		exit
        " | sqlplus /nolog

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    110
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 110
    Points : 111
    Points
    111
    Par défaut
    tiens je vais essayer immédiatement

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    110
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 110
    Points : 111
    Points
    111
    Par défaut
    Citation Envoyé par laurentschneider Voir le message
    plus élégant
    ça marche nikel, beau et efficace

  8. #8
    the_felis_leo
    Invité(e)
    Par défaut
    Voici la réponse :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    	sqlplus /nolog <<- eof
    		-- mon code ....
     
    		SHOW errors
    		exit
    	eof
    A noter la fine subtilité : <<- (avec le tiret)
    au lieu de : << (sans le tiret)

    Avec le tiret (collé, c'est important), toutes les tabulations initiales seront supprimées.

    Tips: pour garder des tabulations, ajouter un caractère du genre " " ou encore mieux utiliser "${VIDE}" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    	X='' ;
    	sqlplus /nolog <<- eof
    	$X	-- mon code ....
    	$X	SELECT
    	$X		1+1 AS "sum"
    	$X	FROM
    	$X		DUAL
    	$X	;
    		SHOW errors
    		exit
    	eof

  9. #9
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Points : 4 926
    Points
    4 926
    Par défaut
    Citation Envoyé par the_felis_leo Voir le message
    Voici la réponse :
    c'est beau !

  10. #10
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Points : 4 926
    Points
    4 926
    Par défaut
    mais hélas <<-EOF ne marche que pour les tabulations et pas pour les espaces

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

Discussions similaires

  1. Lancement d'un shell Unix dans un proc stockée
    Par SBA03 dans le forum Oracle
    Réponses: 20
    Dernier message: 31/08/2006, 09h22
  2. Réponses: 1
    Dernier message: 24/04/2006, 18h03
  3. Script SHELL/UNIX avec mysql
    Par HacHHacH dans le forum Linux
    Réponses: 6
    Dernier message: 06/04/2006, 23h48
  4. CODE RETOUR GENERE PAR PL/SQL POUR SHELL UNIX
    Par mimi_été dans le forum PL/SQL
    Réponses: 6
    Dernier message: 18/11/2004, 08h32
  5. Lancer des shell unix pour creation d'objet ORACLE
    Par sygale dans le forum Administration
    Réponses: 6
    Dernier message: 27/10/2004, 18h03

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