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 :

Que signifie les #, $, @ dans des variables ?


Sujet :

Oracle

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2006
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 27
    Points : 12
    Points
    12
    Par défaut Que signifie les #, $, @ dans des variables ?
    Question peut-être un peu décalé pour ne pas dire bête, mais je suis devant une requête dynamique en SQL PL/SQL dans laquelle je trouve ce genre de chose :

    select #toto as [nom du champs 1],
    b.t$[nom du champs 2],
    b.t$[nom du champs 3],
    ...etc etc...
    From [nom de la table]#toto@base_source

    1/ "#" kesako ?
    2/ $ que signifie t-il ?
    3/ "@" a quoi sert-il ?

  2. #2
    Rédacteur

    Homme Profil pro
    Consultant / formateur Oracle et SQL Server
    Inscrit en
    Décembre 2002
    Messages
    3 460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant / formateur Oracle et SQL Server

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 460
    Points : 8 074
    Points
    8 074
    Par défaut
    Bonjour

    Ceci n'est pas une syntaxe SQL valide.
    Quand vous dites que c'est dynamique, c'est généré par quel outil ?
    Consultant / formateur Oracle indépendant
    Certifié OCP 12c, 11g, 10g ; sécurité 11g

    Ma dernière formation Oracle 19c publiée sur Linkedin : https://fr.linkedin.com/learning/oracle-19c-l-administration

  3. #3
    Membre habitué
    Inscrit en
    Août 2006
    Messages
    181
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 181
    Points : 166
    Points
    166
    Par défaut
    tu utilse quel SGBD ?

  4. #4
    Membre expert

    Profil pro
    Inscrit en
    Février 2006
    Messages
    3 437
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 3 437
    Points : 3 597
    Points
    3 597
    Par défaut
    '# est autorisé dans les noms de colonnes si la colonne est créée avec le nom entre ".
    Il n'y a pas de restriction sur pour '$':

    Exemple:

    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
    22
    23
    24
    25
    26
    SQL> select * from v$version;
     
    BANNER
    ----------------------------------------------------------------
    Oracle9i Enterprise Edition Release 9.2.0.6.0 - Production
    PL/SQL Release 9.2.0.6.0 - Production
    CORE    9.2.0.6.0       Production
    TNS for 32-bit Windows: Version 9.2.0.6.0 - Production
    NLSRTL Version 9.2.0.6.0 - Production
     
    SQL> create table t ("#c1" int);
     
    Table created.
     
    SQL> select "#c1" from t;
     
    no rows selected
     
     
    SQL> create table t$ (c$ int);
     
    Table created.
     
    SQL> select c$ from t$;
     
    no rows selected

  5. #5
    Membre expert

    Profil pro
    Inscrit en
    Février 2006
    Messages
    3 437
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 3 437
    Points : 3 597
    Points
    3 597
    Par défaut
    On a aussi:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SQL> create table "t@" ("c@" int);
     
    Table created.
    mais "@" est en général plutôt réservé pour les noms de services Oracle Net dans les database links ou les chaînes de connexions:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <user>/<password>@<service>
    En résumé: '#' et '$' n'ont pas de signification particulière dans les noms d'objets Oracle alors que "table@dblink" signifie que la table est située sur une autre base de données accessible par le database link "dblink".

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2006
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 27
    Points : 12
    Points
    12
    Par défaut
    Citation Envoyé par pifor
    En résumé: '#' et '$' n'ont pas de signification particulière dans les noms d'objets Oracle alors que "table@dblink" signifie que la table est située sur une autre base de données accessible par le database link "dblink".
    Merci...cette syntaxe me perturbait dans un code qui reste classique:
    [Select...,...,...
    from........
    Where.....]

  7. #7
    Rédacteur

    Homme Profil pro
    Consultant / formateur Oracle et SQL Server
    Inscrit en
    Décembre 2002
    Messages
    3 460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant / formateur Oracle et SQL Server

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 460
    Points : 8 074
    Points
    8 074
    Par défaut
    Citation Envoyé par philuciole
    Merci...cette syntaxe me perturbait dans un code qui reste classique:
    [Select...,...,...
    from........
    Where.....]
    Pas d'accord !
    Les crochets [ ] n'ont rien de classique dans une syntaxe Oracle.
    Et je suis prêt à parier que les # introduisent tout bêtement des commentaires.

    Votre "code" est probablement traité par un outils tiers qui génère ensuite du vrai SQL.
    Consultant / formateur Oracle indépendant
    Certifié OCP 12c, 11g, 10g ; sécurité 11g

    Ma dernière formation Oracle 19c publiée sur Linkedin : https://fr.linkedin.com/learning/oracle-19c-l-administration

  8. #8
    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 Pomalaix
    Pas d'accord !
    Et je suis prêt à parier que les # introduisent tout bêtement des commentaires.
    on parie combien ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    select min(serial#) from v$session;
       SERIAL#
    ----------
             1


  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
    mais un identifiant, s'il n'est pas mis entre guillemets, doit commencer par une lettre

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2006
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 27
    Points : 12
    Points
    12
    Par défaut
    Citation Envoyé par Pomalaix
    Pas d'accord !
    Les crochets [ ] n'ont rien de classique dans une syntaxe Oracle.
    Et je suis prêt à parier que les # introduisent tout bêtement des commentaires.

    Votre "code" est probablement traité par un outils tiers qui génère ensuite du vrai SQL.
    Le crochets ne font pas parti du code...c'est tout simplement pour signaler que la syntaxe du code est basique : avec un SELECT / un WHERE / un FROM ... etc
    Le '#' est postionné devant une variable ==> #ste ... je suppose une variable car elle employé ensuite mais je n'ai pas vu de déclaration ...

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2006
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 27
    Points : 12
    Points
    12
    Par défaut
    select #toto as [nom du champs 1],
    b.t$[nom du champs 2],
    b.t$[nom du champs 3],
    ...etc etc...
    From [nom de la table]#toto@base_source

    en relisant ce bout de code, aprés qlq jours et un WE...voici mes commentaires:

    SELECT #toto as artichaut, ==> je fais un select sur le champs toto que je nomme 'artichaut'
    b.t$champs2,b.t$champs3,... ==> puis sur le champs 2 3 etc... (???$)
    FROM ttpst004#toto@base_source ==> de la table 'ttpst004' , précision du champs #toto , spécification du sgbd '@base_source'...

    Non ?

  12. #12
    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 philuciole
    Non ?
    non!
    lis mon commentaire, un identifiant qui commence par # doit être mis entre guillemets (")

  13. #13
    Rédacteur

    Homme Profil pro
    Consultant / formateur Oracle et SQL Server
    Inscrit en
    Décembre 2002
    Messages
    3 460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant / formateur Oracle et SQL Server

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 460
    Points : 8 074
    Points
    8 074
    Par défaut
    Citation Envoyé par philuciole
    Le crochets ne font pas parti du code...c'est tout simplement pour signaler que la syntaxe du code est basique : avec un SELECT / un WHERE / un FROM ... etc
    Pourquoi ne pas simplement donner votre requête complète telle quelle, plutôt que de complexifier le problème par des pseudo simplifications ??

    Et vous l'avez trouvé où, ce fameux code ? Sur papier ?
    Ou bien vous l'avez vu tourner et produire un résultat ? Et dans ce cas, avec quoi l'exécutez-vous ?
    Consultant / formateur Oracle indépendant
    Certifié OCP 12c, 11g, 10g ; sécurité 11g

    Ma dernière formation Oracle 19c publiée sur Linkedin : https://fr.linkedin.com/learning/oracle-19c-l-administration

Discussions similaires

  1. Réponses: 1
    Dernier message: 04/06/2010, 11h10
  2. Que signifient les [..] placés dans le code
    Par vtuning.net dans le forum C#
    Réponses: 2
    Dernier message: 01/10/2009, 10h22
  3. Réponses: 6
    Dernier message: 24/11/2008, 20h51
  4. Réponses: 2
    Dernier message: 22/06/2008, 15h41
  5. Que signifie les <> dans un code java?
    Par developper2006 dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 23/01/2008, 15h11

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