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 :

pourquoi lpad toujours avec select


Sujet :

PL/SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juillet 2010
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 39
    Par défaut
    Chers collègues :

    Pourquoi les exemples d'utilisation de LPAD et RPAD dans tous les livres et tous les tutoriels est présentée sous la commande SELECT, et lorsque je l'utilise sans select (lpad(ch,3,'x') ): ca retourne l'erreur :
    PLS-00221: 'LPAD' is not a procedure or is undefined
    Compilation failed
    Même chose pour CONCAT :
    Compilation failed, line 59 (11:32:10) The line numbers associated with compilation errors are relative to the first BEGIN statement. This only affects the compilation of database triggers.
    PLS-00221: 'CONCAT' is not a procedure or is undefined
    Compilation failed

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Et si vous nous montriez votre code qui provoque l'erreur ?

  3. #3
    Membre averti
    Inscrit en
    Juillet 2010
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 39
    Par défaut
    Citation Envoyé par Waldar Voir le message
    Et si vous nous montriez votre code qui provoque l'erreur ?
    Voila le code de la procedure :

    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    create or replace procedure "P_K_CHW"
    (chtp IN VARCHAR2)
    is
       N INTEGER;
       CH CHAR;
       CH2 CHAR;
       V1 C_HW.CH_HERST%TYPE;
       V2 C_HW.CH_TYP%TYPE;
     BEGIN 
     
      IF UPPER(CHTP)= 'LAPTOP' THEN
        begin
          SELECT S_CHW_NB.NEXTVAL 
           INTO N
           FROM DUAL;
          IF N<10 THEN 
             BEGIN
               CH:=TO_CHAR(N);
               --lpad(CH,2,'0');
               CH:='00'+CH;
             END;
           ELSIF (N<100) THEN
             begin 
              CH:=TO_CHAR(N);
              --lpad(CH,1,'0');
              CH:='00'+CH;
             end;
          END IF;
          CH2:='NB';
          --CONCAT(CH2,CH);
          CH2:=CH2+CH;  
          -- :NEW.CH_ART:=CH2;
          --INSERT INTO C_HW(CH_ART) VALUES CH2;
            SELECT CH_HERST, CH_TYPE INTO v1, v2
              FROM C_HW WHERE CHBEZ = :NEW.CHBEZ ;     
     
            update C_HW SET CH_ART = CH2
            WHERE  CHBEZ = :NEW.CHBEZ ;
        end;
     
      ELSIF UPPER(CHTP)= 'DESKTOP' THEN
        begin  
           SELECT S_CHW_PC.NEXTVAL 
           INTO N
           FROM DUAL;
          IF N<10 THEN 
            begin
             CH:=TO_CHAR(N);
             lpad(CH,2,'0');
            end;
           ELSIF (N<100) THEN
             begin
              CH:=TO_CHAR(N);
              lpad(CH,1,'0');
             end;
          END IF;
          CH2:='PC';
          CONCAT(CH2,CH);
          --:NEW.CH_ART:=CH2;
          INSERT INTO C_HW(CH_ART) VALUES CH2;
        end;
     
      ELSIF UPPER(CHTP)= 'SERVER' THEN
        begin  
           SELECT S_CHW_SV.NEXTVAL 
           INTO N
           FROM DUAL;
          IF N<10 THEN 
            begin
             CH:=TO_CHAR(N);
             lpad(CH,2,'0');
            end;
           ELSIF N<100 THEN
             begin
              CH:=TO_CHAR(N);
              lpad(CH,1,'0');
             end;
          END IF;
          CH2:='SV';
          CONCAT(CH2,CH);
           --:NEW.CH_ART:=CH2;
          INSERT INTO C_HW(CH_ART) VALUES CH2;
        end; 
     
      ELSIF UPPER (CHTP)= 'CAD' THEN
        begin  
          SELECT S_CHW_WS.NEXTVAL 
           INTO N
           FROM DUAL;
          IF N<10 THEN 
            begin
              CH:=TO_CHAR(N);
              lpad(CH,2,'0');
            end;
           ELSIF N<100 THEN
             begin
              CH:=TO_CHAR(N);
              lpad(CH,1,'0');
             end;
           END IF;
           CH2:='WS';
           CONCAT(CH2,CH);
           --:NEW.CH_ART:=CH2;
           INSERT INTO C_HW(CH_ART) VALUES CH2;
         end;
     
         ELSE RAISE_APPLICATION_ERROR(-20010, 'the type of computer is not existing, existings type : laptop, cad, desktop, server');
      END IF;
     end;?

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Août 2005
    Messages
    316
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 316
    Par défaut
    Bonjour,
    lpad est une fonction (elle renvoie donc un resultat) et a donc besoin
    d'être affectée a une variable

  5. #5
    Membre averti
    Inscrit en
    Juillet 2010
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 39
    Par défaut
    Citation Envoyé par c.langlet Voir le message
    Bonjour,
    lpad est une fonction (elle renvoie donc un resultat) et a donc besoin
    d'être affectée a une variable
    Bonjours, et merci pour votre intervention: alors la on peut aussi dire que concat est aussi une fonction, et il faut recuperer la valeur retournée dans une variable, soit avec lpad ou avec concat.

    Merci beacoup, je vais maintenant l´essayer.

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

Discussions similaires

  1. Probleme avec Select Case
    Par GeffD dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 07/03/2005, 15h28
  2. Insert avec select
    Par Alexandre` dans le forum Langage SQL
    Réponses: 11
    Dernier message: 25/01/2005, 15h16
  3. Curses - Toujours avec la souris
    Par Caine dans le forum Linux
    Réponses: 7
    Dernier message: 05/01/2005, 16h49
  4. Problème avec select top
    Par franculo_caoulene dans le forum MS SQL Server
    Réponses: 8
    Dernier message: 10/12/2004, 14h55
  5. utilisation de fetch avec select
    Par arwen dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 06/06/2003, 10h03

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