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 Oracle Discussion :

prob de concatenation


Sujet :

SQL Oracle

  1. #1
    Membre régulier
    Inscrit en
    Juin 2007
    Messages
    328
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 328
    Points : 115
    Points
    115
    Par défaut prob de concatenation
    Bonjour,
    je desirerai concatener un sensemble de valeurs afin d'avoir a la fin une chaine pour l'executer en tant que trigger.
    voila le code

    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
    create or replace procedure generer(photo VARCHAR2 default NULL,code VARCHAR2 default NULL,t VARCHAR2 default NULL,
    Key VARCHAR2 default NULL,date_modif VARCHAR2 default NULL,diffusion VARCHAR2 default NULL,service VARCHAR2 default NULL,user VARCHAR2 default NULL,pass VARCHAR2 default NULL)
    IS
    trigger_diffusion VARCHAR(300) ;
    diff BOOLEAN ;
    diffusion VARCHAR(20);
    service VARCHAR(20);
    begin
    trigger_diffusion :='CREATE OR REPLACE TRIGGER trigger_diffusion BEFORE UPDATE OR INSERT ON PERSONNES FOR EACH ROW  DECLARE  diff BOOLEAN ; 
    diff:=true ;
     
    BEGIN ';
     
     
    trigger_diffusion:= trigger_diffusion||' if ( :new.diffphoto = 1 ) then diff:=true else diff:=false; end if;end if ; update '||t||'@'||service||' set '||diffusion||'=:'||diff||' where  substr('||key||',1,(length('||key||')-1)= :new.id_personne';
     
    dbms_output.put_line(trigger_diffusion) ;
    end;
    le prob c'est qu'il ne veut pas concatener les valeurs des diff et diffusion
    voila l'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    PL/SQL: Compilation unit analysis terminated
    PLS-00410: champs en double interdits dans RECORD ou TABLE

  2. #2
    Expert éminent sénior Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Points : 11 252
    Points
    11 252
    Par défaut
    ...
    le prob c'est qu'il ne veut pas concatener les valeurs des diff et diffusion
    ...
    Ca c'est ce que tu pense. Mais l'erreur indique que la variable diffusion est declarée deux fois.

  3. #3
    Membre régulier
    Inscrit en
    Juin 2007
    Messages
    328
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 328
    Points : 115
    Points
    115
    Par défaut
    voila le nouveau code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    create or replace procedure generer(photo VARCHAR2 default NULL,code VARCHAR2 default NULL,t VARCHAR2 default NULL,
    Key VARCHAR2 default NULL,date_modif VARCHAR2 default NULL,diffusion VARCHAR2 default NULL,service VARCHAR2 default NULL,user VARCHAR2 default NULL,pass VARCHAR2 default NULL)
    IS
    trigger_diffusion VARCHAR(300) ;
    diff BOOLEAN ;
    begin
    trigger_diffusion:='la chaine est : ';
    diff:=true ;
     
    trigger_diffusion:= trigger_diffusion||' if ( :new.diffphoto = 1 ) then diff:=true else diff:=false; end if;end if ; update '||t||'@'||service||' set '||diffusion||'=:'||diff||' where  substr('||key||',1,(length('||key||')-1)= :new.id_personne';
     
    dbms_output.put_line(trigger_diffusion) ;
    end;
    et l'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    PL/SQL: Statement ignored
    PLS-00306: numÚro ou types d'arguments erronÚs dans appel Ó '||'

  4. #4
    Expert éminent sénior Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Points : 11 252
    Points
    11 252
    Par défaut
    Et t'a appri où que le type boolean peut être utilisée à la droite ou la gauche de l'opérateur de concatenation des chaînes des caractères "||" ?

  5. #5
    Membre régulier
    Inscrit en
    Juin 2007
    Messages
    328
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 328
    Points : 115
    Points
    115
    Par défaut
    je l'ai mis comme ca c'est tout , maintenant quand jy pense , j'aurai pas du le faire
    sinon comment le convertir en VARCHAR ?

  6. #6
    Membre chevronné Avatar de Garuda
    Homme Profil pro
    Chef de projet / Urbaniste SI
    Inscrit en
    Juin 2007
    Messages
    1 285
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet / Urbaniste SI
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 285
    Points : 2 071
    Points
    2 071
    Par défaut
    Citation Envoyé par zaineb.z Voir le message
    je l'ai mis comme ca c'est tout , maintenant quand jy pense , j'aurai pas du le faire
    sinon comment le convertir en VARCHAR ?
    Question inutile !
    Le type BOOLEAN n'existe pas pour une colonne de table !
    Donc
    que tu veux générer ne marchera pas !
    Garuda गरूड
    Brahmâ la Guerre et Vishnu la Paix

    Oracle 12C R2 - Forms11GR2 - Toad 12 - sharePoint 2010

  7. #7
    Membre régulier
    Inscrit en
    Juin 2007
    Messages
    328
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 328
    Points : 115
    Points
    115
    Par défaut
    okey , merci :-)

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

Discussions similaires

  1. Concaténer deux fichiers Ligne/Ligne avec SH
    Par guiltouf dans le forum Linux
    Réponses: 7
    Dernier message: 22/05/2007, 14h35
  2. Prob, images, Panels, et form.
    Par CaptainChoc dans le forum Composants VCL
    Réponses: 2
    Dernier message: 10/05/2003, 10h08
  3. Thread probs avec WaitFor()
    Par pixelrock dans le forum C++Builder
    Réponses: 2
    Dernier message: 04/11/2002, 09h40
  4. [Kylix] prob listview
    Par sdoura2 dans le forum EDI
    Réponses: 1
    Dernier message: 22/10/2002, 21h37
  5. probleme de concatenation
    Par cyna dans le forum C
    Réponses: 2
    Dernier message: 23/08/2002, 10h41

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