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 :

Chaine trop grande pour un varchar


Sujet :

PL/SQL Oracle

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 85
    Points : 62
    Points
    62
    Par défaut Chaine trop grande pour un varchar
    Bonjour,

    Dans une fonction stockée, je construis un tableau html. Celui-ci peut être très grand, et dépasser les 32767 caractères.
    Cela fait exploser ma fonction.
    Quel type de donnée utiliser pour stocker ce genre de chaine?

    J'ai essayé un nclob, mais j'ai le même soucis...

    Merci!

  2. #2
    Membre expérimenté Avatar de ojo77
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Décembre 2010
    Messages
    680
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Décembre 2010
    Messages : 680
    Points : 1 597
    Points
    1 597
    Par défaut
    clob

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 85
    Points : 62
    Points
    62
    Par défaut
    Merci...

    comme je le dis dans le post initial, j'ai essayé avec un nclob, et avec un clob, j'ai la même chose:

    ORA-06502: PL/SQL : erreur numérique ou erreur sur une valeur: tampon de chaîne de caractères trop petit
    ORA-06512: à "COMPPRE.GET_COMMANDE_HTML", ligne 59
    06502. 00000 - "PL/SQL: numeric or value error%s"
    *Cause:
    *Action:
    C'est sûrement très bête... mais je ne trouve pas l'info :/

  4. #4
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    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 080
    Points : 30 803
    Points
    30 803
    Par défaut
    Sans voir la portion de code qui pose problème, il est difficile de trouver ce qu'il faut modifier
    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.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 85
    Points : 62
    Points
    62
    Par défaut
    Merci de te pencher sur mon problème!

    d'un autre côté, la ligne 59 est vide...
    D'après le message d'erreur, j'avais pensé que je n'employais pas le bon type de données...
    Ce qui semble se confirmer par le fait que lorsque ce que je renvoie n'est pas trop grand, ça fonctionne.

    Le principe:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    tableau_formate clob;
     
    tableau_formate = entete;
    tantque ligne_commande
        tableau_formate := tableau_formate || mise_en_forme_html(ligne_commande);
    fin tantque;
    tableau_formate := tableau_formate || pied;
     
    return tableau_formate;
    et quand j'ai trop de lignes dans ma commande, ça pète... avec l'erreur
    ORA-06502: PL/SQL : erreur numérique ou erreur sur une valeur: tampon de chaîne de caractères trop petit
    ORA-06512: à "COMPPRE.GET_COMMANDE_HTML", ligne 59
    06502. 00000 - "PL/SQL: numeric or value error%s"
    *Cause:
    *Action

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 85
    Points : 62
    Points
    62
    Par défaut
    Alors non...
    En fait la fonction semble marcher.
    Du coup, c'est la requête qui l'appelle qui foire (et je ne sais pas à quoi fait référence la ligne 59...)

    si je fais simplement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    select
      GET_COMMANDE_HTML(5182365)                   as RECAP_COMMANDE
    from 
      dual;
    j'obtiens le message déjà sité, alors que la fonction passe bien en debug avec ce même paramêtre

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 85
    Points : 62
    Points
    62
    Par défaut
    Bon alors c'est moi... désolé pour le dérangement...
    La variable dans laquelle je mettais ma chaine de retour était bien un clob, mais je n'avais pas modifié le type de retour de la fonction...
    le noob, quoi...

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

Discussions similaires

  1. chaine trop longue pour être indexée
    Par ctobini dans le forum SQL Procédural
    Réponses: 6
    Dernier message: 04/10/2007, 10h36
  2. Contenu trop grand pour son conteneur
    Par mLk92 dans le forum Mise en page CSS
    Réponses: 3
    Dernier message: 03/10/2007, 22h14
  3. Réponses: 2
    Dernier message: 09/10/2006, 17h36
  4. mon arrière plan trop grand pour le bloc
    Par 123quatre dans le forum Mise en page CSS
    Réponses: 3
    Dernier message: 07/10/2006, 00h54
  5. chaine trop longue pour envoyer en socket?
    Par jeje.r dans le forum C++Builder
    Réponses: 10
    Dernier message: 27/06/2003, 16h36

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