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

Oracle Discussion :

[8i] prompt SqlPlus


Sujet :

Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673
    Par défaut [8i] prompt SqlPlus
    Bonjour tout le monde,

    Pour faciliter mes développements je cherche à paramétrer l'affichage de SQLPlus (_SQLPLUS_RELEASE = "800060000") sur une base 8.1.7.4.0

    En particulier je souhaite modifier le prompt pour qu'il affiche non pas :
    SQL>
    mais :
    <utilisateur_connecte> <version_base>>
    J'ai bien identifié les 2 commandes permettant de récupérer ces informations :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SQL>show rel
    release 801070400
     
    SQL>show user
    USER est "CYRIL"
    Mais :
    1/ comment puis-je écrire ce script par exemple en Perl - qui gère parfaitement les manipulations sur les chaînes de caractères - et l'interfacer avec Oracle ?
    2/ existe t'il un mécanisme permettant de déclencher ce script automatiquement (l'équivalent d'un trigger "ON-CONNECT") ?

    Dans le cas où le langage Perl ne conviendrait pas, je suis prêt à écrire ce script en langage C, C++, Java ou autre.

    Merci d'avance.

  2. #2
    Expert Oracle confirmé

    Homme Profil pro
    Consultant Big Data
    Inscrit en
    Mars 2003
    Messages
    448
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Consultant Big Data
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2003
    Messages : 448
    Par défaut
    A chaque lancement de SQL*Plus, le fichier LOGIN.SQL, que tu dois écrire et stocker au même endroit que l'application sqlplusw.exe, est executé.

    C'est grâce à lui que tu vas pouvoir parametrer ton affichage.

    Essaye le code suivant dans ce fichier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    column Instance new_value myInstance
    set termout off
    select user || ' - ' || version as Instance from v$instance ;
    set termout on
    set sqlprompt '&myInstance> '
    NB : à partir de la version 10g, ce fichier est automatiquement réexecuté si tu te reconnectes. Pour les versions antérieures, en cas de reconnexion sous un autre compte, le prompt ne sera pas mis à jour, ce qui peut-être dangereux.

  3. #3
    Expert éminent
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    il faut modifier le fichier glogin.sql du répertoire $ORACLE_HOME/sqlplus/admin en ajoutant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    set heading off
    set termout off
    spool c:\pr.sql
    select 'set sqlp "'||upper(user)||'-'||upper(name)||'> "' from v$database;
    spool off
    @c:\pr.sql
    $del pr.sql
    set heading on
    set termout on
    Il faut évidemment modifier le SELECT selon le besoin

    En revanche, ceci ne fonctionne qu'à l'ouverture de SQL*Plus, en cas de connexion à une autre instance, il faut réexécuter glogin.
    Sous SQL*Plus 10g, le prompt peut être modifier à chaque connexion.

    Edit : argh... rouardg m'a grillé

  4. #4
    Membre Expert
    Avatar de bouyao
    Inscrit en
    Janvier 2005
    Messages
    1 778
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 778
    Par défaut
    et cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    set sqlprompt "_USER  _O_RELEASE>"
    EN 10G

  5. #5
    Expert éminent
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SQL> set sqlprompt "_USER  _O_RELEASE>"
    _USER  _O_RELEASE>

  6. #6
    Membre Expert
    Avatar de bouyao
    Inscrit en
    Janvier 2005
    Messages
    1 778
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 778
    Par défaut
    Ca marche en 10g.

  7. #7
    Expert éminent
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    8i dans le titre

  8. #8
    Rédacteur

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 320
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 320
    Par défaut
    Citation Envoyé par Fred_D
    8i dans le titre
    alors il faut envisager une migration

  9. #9
    Membre Expert

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673
    Par défaut
    Merci à tous de vos réponses et surtout de votre rapidité.

    Je n'ai pas encore regardé toutes vos propositions mais concernant l'utilisation de _USER et _O_REALEASE j'ai vu leurs existences mais ces variables n'existent qu'à partir de la 10g.
    Or, je travaille sur des bases 8i, 9i et 10g donc il faut que la technique utilisée fonctionne dans la version la plus basse soit 8i.

    Je regarde le reste des propositions et vous tiens au courant.

  10. #10
    Membre Expert

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673
    Par défaut
    Eh bien, voici le fichier login.sql que j'ai créé dans le répertoire $ORACLE_HOME\bin qui répond parfaitement à mon besoin :
    Citation Envoyé par rouardg
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    column Instance new_value myInstance
    set termout off
    select user || ' - ' || version as Instance from v$instance ;
    set termout on
    set sqlprompt '&myInstance> '
    Ceci dit, j'ai encore quelques questions :
    1/ pour les reconnexions qui, comme vous l'avez précisés, n'exécutent pas ce fichier, je suis obligé de lancer le fichier manuellement (j'en reviens à mon idée de "pseudo déclencheur" ) ?
    2/ Fred_D >> ta solution que je comprends a une différence majeure par rapport à celle de rouardg : elle se situe dans un autre répertoire. Pourquoi n'y a t'il pas qu'un seul répertoire de paramétrage de SQLPlus et quelles conséquences cela induit-il de faire une modification dans l'un plutôt que dans l'autre ?
    3/ vous avez résolu mon problème grâce au SQL mais est-il possible (pure curiosité) d'interfacer un autre langage ?

    Merci encore à vous tous.

  11. #11
    Expert éminent
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    Citation Envoyé par Magnus
    Ceci dit, j'ai encore quelques questions :
    1/ pour les reconnexions qui, comme vous l'avez précisés, n'exécutent pas ce fichier, je suis obligé de lancer le fichier manuellement (j'en reviens à mon idée de "pseudo déclencheur" ) ?
    Aucune chance, on ne peut pas interfacer Oracle avec SQL*Plus... d'aucune manière

    Citation Envoyé par Magnus
    2/ Fred_D >> ta solution que je comprends a une différence majeure par rapport à celle de rouardg : elle se situe dans un autre répertoire. Pourquoi n'y a t'il pas qu'un seul répertoire de paramétrage de SQLPlus et quelles conséquences cela induit-il de faire une modification dans l'un plutôt que dans l'autre ?
    En effet... si je ne me trompe pas, SQL*Plus recherche dans son répertoire et dans bin à défaut mais là faudrait vérifier la doc

    Citation Envoyé par Magnus
    3/ vous avez résolu mon problème grâce au SQL mais est-il possible (pure curiosité) d'interfacer un autre langage ?
    Pas que je sache... beaucoup s'y sont cassés les dents crois moi

    Merci encore à vous tous.
    De rien

  12. #12
    Membre Expert

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673
    Par défaut
    Citation Envoyé par Fred_D
    En effet... si je ne me trompe pas, SQL*Plus recherche dans son répertoire et dans bin à défaut mais là faudrait vérifier la doc
    Exact mais j'ai pris le temps de vérifier et d'après la doc :
    Table 3-2 Profile Scripts affecting SQL*Plus User Interface Settings
    - (Site Profile) glogin.sql is run in the command line and windows GUI "after successful Oracle Database connection from a SQLPLUS or CONNECT command"
    - (User Profile) login.sql is run in the command line and windows GUI "Immediately after the Site Profile".

    Citation Envoyé par Fred_D
    Pas que je sache... beaucoup s'y sont cassés les dents crois moi
    Etonnant. Je tâcherai de m'en souvenir.

    Encore une dernière question => si je lance le fichier de config manuellement j'obtiens un message d'erreur bien que le prompt soit actualisé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    8.1.7.4.0 CYRIL> conn DJEY/DJEY@db8
    Connecté.
    8.1.7.4.0 CYRIL> @login
    Entrée limitée à 29 caractères
    8.1.7.4.0 DJEY>
    A quoi est-ce dû ?

    Réponse : il faut ajouter un saut de ligne après la dernière instruction du fichier .sql

  13. #13
    Membre éprouvé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Mai 2007
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Mai 2007
    Messages : 126
    Par défaut
    Bonjour,

    J'utilise cette technique, mais dans le cas d'un sqlplus /nolog, sql ne peut évidemment pas exécuter la requête et demande la valeur de la variable.

    Si l'on fait un return et ensuite un connect, ça marche bien.

    Quelqu'un a t'il une astuce pour éviter l'affichage du premier message ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SQL*Plus: Release 10.1.0.2.0 - Production on Thu Jan 8 16:10:22 2009
     
    Copyright (c) 1982, 2004, Oracle.  All rights reserved.
     
    Enter value for myinstance:
     > connect toto@BASE
    Enter password:
    Connected.
    SERVEUR_BASE_TOTO >

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 18/11/2008, 15h20
  2. sqlplus package "show error"
    Par jean-jacques varvenne dans le forum Oracle
    Réponses: 2
    Dernier message: 07/12/2004, 12h17
  3. pb de connexion sqlplus (ORA-12560)
    Par stephbibi dans le forum Oracle
    Réponses: 7
    Dernier message: 21/10/2004, 21h02
  4. Zsh configuration du prompt
    Par Noki dans le forum Linux
    Réponses: 11
    Dernier message: 29/03/2004, 15h47
  5. [reseaux] pb prompt sur un routeur cisco
    Par Jeh dans le forum Programmation et administration système
    Réponses: 3
    Dernier message: 20/10/2003, 15h04

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