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 :

Input truncated to 11 characters


Sujet :

PL/SQL Oracle

  1. #1
    Membre averti
    Inscrit en
    Avril 2009
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 21
    Par défaut Input truncated to 11 characters
    Bonjour,

    j'ai cree une fonction
    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 FUNCTION get_appliquer (p_invt  in  appliquer.n_invt_ord%TYPE)
      RETURN VARCHAR2
    IS
      l_text  VARCHAR2(32767) := NULL;
    BEGIN
      FOR cur_rec IN (SELECT iuapp FROM appliquer WHERE n_invt_ord = p_invt) LOOP
        l_text := l_text || ',' || cur_rec.iuapp;
      END LOOP;
      RETURN LTRIM(l_text, ',');
    END;
    /
    SHOW ERRORS
    il m'arrive un problème que je ne parviens pas à comprendre.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    SQL> start app.sql
     
    Function created.
     
    Input truncated to 11 characters
    No errors.
    Merci d'avance pour vos réponses

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    331
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 331
    Par défaut
    Je crois qu'il te manque juste un "retour à la ligne" à la fin de ton script.

    Rachid A.

  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
    ou il y a des espaces qui trainent en fin de script

  4. #4
    Membre averti
    Inscrit en
    Avril 2009
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 21
    Par défaut
    salut

    cette fonction est résolue mais on ajoute une requete dans le meme fichier
    mais il m'arrive le probleme...

    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
     
    set arraysize 200
    set maxdata 5000
    CREATE OR REPLACE FUNCTION get_appliquer (p_invt  in  appliquer.n_invt_ord%TYPE)
      RETURN VARCHAR2
    IS
      l_text  VARCHAR2(32767) := NULL;
    BEGIN
      FOR cur_rec IN (SELECT iuapp FROM appliquer WHERE n_invt_ord = p_invt) LOOP
        l_text := l_text || ',' || cur_rec.iuapp;
      END LOOP;
      RETURN l_text;
    END;
    /
    SHOW ERRORS
    column list_app format A50
    select n_invt_ord, get_appliquer(n_invt_ord) as list_app
    from appliquer
    group by n_invt_ord;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    SQL> start app.sql
     
    Function created.
     
    No errors.
    buffer overflow. Use SET command to reduce ARRAYSIZE or increase MAXDATA.

  5. #5
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    331
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 331
    Par défaut
    un doit résoudre ton problème
    sinon essaie d'augmenter la taille de MAXDATA :
    Rachid A.

  6. #6
    Membre averti
    Inscrit en
    Avril 2009
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 21
    Par défaut
    Bonjour,

    Cet problème est résolue. Merci beaucoup mydb_server
    je crée une autre fonction avec curseur dans un autre fichier
    Mais j'ai trouvé un message d'erreur...

    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
     
    set arraysize 1
    set maxdata 60000
    CREATE OR REPLACE FUNCTION concatenate_list (p_cursor IN SYS_REFCURSOR)
      RETURN  VARCHAR2
    IS
      l_return  VARCHAR2(32767); 
      l_temp    VARCHAR2(32767);
    BEGIN
      LOOP
        FETCH p_cursor
        INTO  l_temp;
        EXIT WHEN p_cursor%NOTFOUND;
        l_return := l_return || ',' || l_temp;
      END LOOP;
      RETURN LTRIM(l_return, ',');
    END;
    /
    SHOW ERRORS
    et voilà le message suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    SQL> start app2.sql
     
    Warning: Function created with compilation errors.
     
    Input truncated to 11 characters
    Errors for FUNCTION CONCATENATE_LIST:
     
    LINE/COL ERROR
    -------- -----------------------------------------------------------------
    0/0      PL/SQL: Compilation unit analysis terminated
    1/40     PLS-00201: identifier 'SYS_REFCURSOR' must be declared
    Merci d'avance pour vos réponses

  7. #7
    Membre averti
    Inscrit en
    Avril 2009
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 21
    Par défaut
    Bonjour,
    peut-etre SYS_REFCURSOR n'est pas disponible dans cette verion suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    SQL> select * from v$version;
     
    BANNER
    ----------------------------------------------------------------
    Oracle8i Enterprise Edition Release 8.1.7.0.1 - Production
    PL/SQL Release 8.1.7.0.0 - Production
    CORE    8.1.7.0.0       Production
    TNS for Linux: Version 8.1.7.0.0 - Development
    NLSRTL Version 3.4.1.0.0 - Production
    si oui, pouvez-vous me donner une autre solution?!
    Merci

  8. #8
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    331
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 331
    Par défaut
    Exact, le type REF_CURSOR n'existe qu'à partir de la 9i.

    Avant la 9i, il fallait le déclarer comme type.
    Essaie le code suivant :
    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
    SET arraysize 1
    SET maxdata 60000
     
    CREATE OR REPLACE PACKAGE Types AS 
      TYPE cursor_type IS REF CURSOR;
    END Types;
     
    CREATE OR REPLACE FUNCTION concatenate_list (p_cursor IN Types.cursor_type)
      RETURN  VARCHAR2
    IS
      l_return  VARCHAR2(32767); 
      l_temp    VARCHAR2(32767);
    BEGIN
      LOOP
        FETCH p_cursor
        INTO  l_temp;
        EXIT WHEN p_cursor%NOTFOUND;
        l_return := l_return || ',' || l_temp;
      END LOOP;
      RETURN LTRIM(l_return, ',');
    END;
    /
    SHOW ERRORS
    Rachid A.

  9. #9
    Membre averti
    Inscrit en
    Avril 2009
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 21
    Par défaut
    j'ai déjà essayé ce script mais on m'arrive le message d'erreur suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    SQL> start app2.sql
     
    Warning: Package created with compilation errors.
     
    Input truncated to 11 characters
    Errors for PACKAGE TYPES:
     
    LINE/COL ERROR
    -------- -----------------------------------------------------------------
    4/1      PLS-00103: Encountered the symbol "CREATE"
    Merci

  10. #10
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    331
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 331
    Par défaut
    Il manque un petit "/" après la ligne "END Types;"

    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
    SET arraysize 1
    SET maxdata 60000
     
    CREATE OR REPLACE PACKAGE Types AS 
      TYPE cursor_type IS REF CURSOR;
    END Types;
    /
     
    CREATE OR REPLACE FUNCTION concatenate_list (p_cursor IN Types.cursor_type)
      RETURN  VARCHAR2
    IS
      l_return  VARCHAR2(32767); 
      l_temp    VARCHAR2(32767);
    BEGIN
      LOOP
        FETCH p_cursor
        INTO  l_temp;
        EXIT WHEN p_cursor%NOTFOUND;
        l_return := l_return || ',' || l_temp;
      END LOOP;
      RETURN LTRIM(l_return, ',');
    END;
    /
    SHOW ERRORS
    Rachid A.

  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
    On n'est pas là pour debugger le code à votre place, merci de lire les messages d'erreur et isoler le code pour déterminer où est l'erreur afin qu'on se concentre sur des problèmes qui pourront aider d'autres membres.


  12. #12
    Membre averti
    Inscrit en
    Avril 2009
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 21
    Par défaut
    Bonjour,
    Je te remercie encore que mon problème est résolu.
    je Fais essayer mon effort pour chercher le problème ( ORA-22902: CURSOR expression not allowed ) sur le web mais je n'ai pas trouvé une solution
    Code error : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    No errors.
           concatenate_list(cursor(SELECT p2.iuapp FROM appliquer p2 WHERE p2.n_invt_ord = p.n_invt_ord)
                            *
    ERROR at line 2:
    ORA-22902: CURSOR expression not allowed
    Voilà une requête suivante :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    COLUMN list_app FORMAT A50
    SELECT p.n_invt_ord,
           concatenate_list(cursor(SELECT p2.iuapp FROM appliquer p2 WHERE p2.n_invt_ord = p.n_invt_ord)) list_app
    FROM   appliquer p
    GROUP BY p.n_invt_ord;
    Merci d'avance pour vos réponses

  13. #13
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    331
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 331
    Par défaut
    N'oublie pas que tu es en version Oracle 8.1.7

    Si tu es en train d'apprendre en lisant un tutoriel ou une documentation quelconque, essaie d'utiliser la même version Oracle que celle citée dans tes docs, ça te permettra de te concentrer sur l'essentiel, et facilitera ton apprentissage

    Rachid A.

  14. #14
    Expert confirmé 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

  15. #15
    Membre averti
    Inscrit en
    Avril 2009
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 21
    Par défaut
    Merci beaucoup mnitu et mydb_server

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

Discussions similaires

  1. Erreur : Unexpected character in input
    Par Allen_blocci dans le forum Langage
    Réponses: 2
    Dernier message: 31/07/2013, 11h09
  2. Erreur "Unexpected character in input en php"
    Par chouxe dans le forum Langage
    Réponses: 6
    Dernier message: 22/06/2011, 15h32
  3. input/output problem with arabic characters
    Par caly2009 dans le forum Langage
    Réponses: 6
    Dernier message: 04/09/2009, 17h48
  4. [JDev 9i][Linux] Malformed input character
    Par thomas_strass dans le forum JBuilder
    Réponses: 1
    Dernier message: 20/09/2004, 12h06
  5. character set // Nls_lang
    Par fopicht dans le forum Oracle
    Réponses: 2
    Dernier message: 23/05/2002, 12h04

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