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

PL/SQL Oracle Discussion :

Utilisation de variable dans la chaine de caractères [12c]


Sujet :

PL/SQL Oracle

  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 083
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 083
    Par défaut Utilisation de variable dans la chaine de caractères
    Bonjour,
    Je veux que la fonction dbms_output.put_line m'affiche:

    execute immediate 'ALTER user USER1 identified by values 'AFGTR234FDR' ';

    La chaine AFGTR234FDR doit être entre single quote.

    Voici mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    declare
    pass varchar2(50):='AFGTR234FDR';
    muser varchar2(50):='USER1';
    myvar varchar(100);
    BEGIN
    dbms_output.put_line(q'[execute immediate 'ALTER user ||muser|| identified by values '||pass||'';]');
     
    end;
    /
    Mais le résultat:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Statement processed.
    execute immediate 'ALTER user ||muser|| identified by values '||pass||'';
    Comment dois-je faire pour avoir:
    execute immediate 'ALTER user USER1 identified by values 'AFGTR234FDR' ';

    D'avance merci.

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 134
    Par défaut
    Une apostrophe à l'intérieur d'une chaine de caractères doit être doublée.
    Ensuite, il suffit de bien compter pour s'assurer de l’enchaînement des caractères d'encadrement.
    Ce serait donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dbms_output.put_line('[execute immediate ''ALTER user ' ||muser|| ' identified by values ''' || pass || ''';]');
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 083
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 083
    Par défaut
    Merci.
    Aussi il faut enlever le crochet:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    dbms_output.put_line('execute immediate ''ALTER user ' ||muser|| ' identified by values ''' || pass || ''';');
    Résultat:
    [COD]
    Statement processed.
    execute immediate 'ALTER user USER1 identified by values 'AFGTR234FDR';
    [/CODE]

    Cordialement.

  4. #4
    Membre Expert
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    2 005
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Avril 2013
    Messages : 2 005
    Par défaut
    "Une apostrophe à l'intérieur d'une chaine de caractères doit être doublée." : plus maintenant, big1 a bien utilisé la syntaxe dispo depuis Oracle 10 ou 11 pour banaliser TOUTES les quotes d'une chaîne de caractères, à savoir utiliser q' caractère_delimitant ... caractère_delimitant '

    Donc son
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dbms_output.put_line(q'[execute immediate 'ALTER user ||muser|| identified by values '||pass||'';]');
    n'est pas si mauvais que ça c'est juste les '' a la fin qui posent pb.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 21/03/2016, 11h36
  2. Variable utilisée dans une chaine de caractères
    Par cchampion2fr dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 07/10/2008, 13h46
  3. Réponses: 2
    Dernier message: 02/10/2007, 11h42
  4. Réponses: 14
    Dernier message: 22/04/2006, 21h59
  5. [C#] Une variable dans une chaine de caractères...
    Par GlorfindelHebril dans le forum Windows Forms
    Réponses: 9
    Dernier message: 31/03/2005, 14h30

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