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

Oracle Discussion :

[8i] type CLOB


Sujet :

Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Inscrit en
    Avril 2004
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 12
    Par défaut [8i] type CLOB
    Bonjour a tous, je rencontre un probleme , j'ai developper une fonction qui me retourne un CLOB (plus de 6000 car) sur oracle 9.2, mais mon client a une version d'oracle plus ancienne (8i), et ma function ne fonctionne pas auriez vous une idée pour pouvoir retourner un CLOB de plus de 6000 car en oracle 8i.

    merci d'avance pour votre aide.

  2. #2
    Membre expérimenté
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2004
    Messages
    265
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2004
    Messages : 265
    Par défaut
    En modifiant les variables de configuration de iSqlPlus ?

  3. #3
    Membre habitué
    Inscrit en
    Avril 2004
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 12
    Par défaut
    bonjour, j'appele cette fonction en php , mais le probleme vient de la comppilation , (je vient de le voir avec mon client) en fait oracle 8i ne prend pas encompte un retour CLOB ! du coup je ne sais pas comment faire puisque je n'ai pas trouvé d'equivalent , peut etre auriez vous une solution . je suis debutant en oracle.

    merci d'avance.

  4. #4
    Membre émérite Avatar de plabrevo
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    548
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 548
    Par défaut
    Extract du SQL*Reference 8i:

    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
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
     
    Table 2-1  Built-In Datatype Summary
    Codea  	Built-In Datatype  	Description 
     
    1  
     
     
    VARCHAR2(size)  
     
     
    Variable-length character string having maximum length size bytes. Maximum size is 4000, and minimum is 1. You must specify size for VARCHAR2.  
     
    1  
     
     
    NVARCHAR2(size)  
     
     
    Variable-length character string having maximum length size characters or bytes, depending on the choice of national character set. Maximum size is determined by the number of bytes required to store each character, with an upper limit of 4000 bytes. You must specify size for NVARCHAR2.  
     
    2  
     
     
    NUMBER(p,s)  
     
     
    Number having precision p and scale s. The precision p can range from 1 to 38. The scale s can range from -84 to 127.  
     
    8  
     
     
    LONG  
     
     
    Character data of variable length up to 2 gigabytes, or 231 -1 bytes.  
     
    12  
     
     
    DATE  
     
     
    Valid date range from January 1, 4712 BC to December 31, 9999 AD.  
     
    23  
     
     
    RAW(size)  
     
     
    Raw binary data of length size bytes. Maximum size is 2000 bytes. You must specify size for a RAW value.  
     
    24  
     
     
    LONG RAW  
     
     
    Raw binary data of variable length up to 2 gigabytes.  
     
    69  
     
     
    ROWID  
     
     
    Hexadecimal string representing the unique address of a row in its table. This datatype is primarily for values returned by the ROWID pseudocolumn.  
     
    208  
     
     
    UROWID [(size)]  
     
     
    Hexadecimal string representing the logical address of a row of an index-organized table. The optional size is the size of a column of type UROWID. The maximum size and default is 4000 bytes.  
     
    96  
     
     
    CHAR(size)  
     
     
    Fixed-length character data of length size bytes. Maximum size is 2000 bytes. Default and minimum size is 1 byte.  
     
    96  
     
     
    NCHAR(size)  
     
     
    Fixed-length character data of length size characters or bytes, depending on the choice of national character set. Maximum size is determined by the number of bytes required to store each character, with an upper limit of 2000 bytes. Default and minimum size is 1 character or 1 byte, depending on the character set.  
     
    112  
     
     
    CLOB  
     
     
    A character large object containing single-byte characters. Both fixed-width and variable-width character sets are supported, both using the CHAR database character set. Maximum size is 4 gigabytes.  
     
    112  
     
     
    NCLOB  
     
     
    A character large object containing multibyte characters. Both fixed-width and variable-width character sets are supported, both using the NCHAR database character set. Maximum size is 4 gigabytes. Stores national character set data.  
     
    113  
     
     
    BLOB  
     
     
    A binary large object. Maximum size is 4 gigabytes.  
     
    114  
     
     
    BFILE  
     
     
    Contains a locator to a large binary file stored outside the database. Enables byte stream I/O access to external LOBs residing on the database server. Maximum size is 4 gigabytes.  
    a The codes listed for the datatypes are used internally by Oracle. The datatype code of a column or object attribute is returned when you use the DUMP function.
    Les CLOB sont supportes en 8i. Quelle est l'erreur exacte?

  5. #5
    Membre habitué
    Inscrit en
    Avril 2004
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 12
    Par défaut hello
    oui je sais le probleme survient quand je veux compiler une fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    CREATE OR REPLACE FUNCTION lvd(txt in VARCHAR) return CLOB
    as
     
    begin
        return txt;
    end;
    /

    celle ci me retourne cette erreur :
    PLS-00382: expression du mauvais type

    la fonction est juste pourr representer mon probleme en realite elle construit un menu htmlt recursivement de + de 6000 caracteres.

    merci pour ton aide.

  6. #6
    Expert confirmé
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Par défaut
    Faites-le en 2 temps

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    CREATE OR REPLACE FUNCTION x ( t IN VARCHAR2 ) RETURN CLOB
    IS
      LC$Clob CLOB := t ;
    BEGIN
      RETURN LC$clob ;
    END ;
    /
    et l'interro :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT x( RPAD('*',6000,'*')) FROM dual
    /

  7. #7
    Membre habitué
    Inscrit en
    Avril 2004
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 12
    Par défaut
    je vais tester je te tiens au courant

    merci encore

  8. #8
    Membre habitué
    Inscrit en
    Avril 2004
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 12
    Par défaut
    meme probleme je pense que c'est le RETURN CLOB qui passe pas mais j'ai pas trouvé d'alternative

  9. #9
    Membre habitué
    Inscrit en
    Avril 2004
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 12
    Par défaut
    c'est pire en fait quand je fait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    CREATE OR REPLACE FUNCTION x ( t IN VARCHAR2 ) RETURN CLOB
    IS
      LC$Clob CLOB := empty_clob() ;
    BEGIN
      RETURN LC$clob ;
    END ;
    /
    ca compile bien ! mais ca me retourne vide evidement donc je fait ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    CREATE OR REPLACE FUNCTION x ( t IN VARCHAR2 ) RETURN CLOB
    IS
      LC$Clob CLOB := empty_clob() ;
    BEGIN
    LC$clob:=t;
      RETURN t ;
    END ;
    /
    je retrouve le meme probleme !

    j'y comprend rien la .

  10. #10
    Expert confirmé
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Par défaut
    Pourquoi utilisez-vous la fonction empty_clob() ?

    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
    SQL> set serveroutput on
    SQL> 
    SQL> CREATE OR REPLACE FUNCTION x ( t IN VARCHAR2 ) RETURN CLOB 
      2  IS 
      3    LC$Clob CLOB := t ; 
      4  BEGIN 
      5    RETURN LC$clob ; 
      6  END ; 
      7  /
     
    Fonction créée.
     
    SQL> SELECT x( RPAD('*',6000,'*')) FROM dual 
      2  /
     
    X(RPAD('*',6000,'*'))
    --------------------------------------------------------------------------------
    ********************************************************************************
     
    SQL>

  11. #11
    Membre Expert

    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2004
    Messages
    2 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 862
    Par défaut
    Il me semble qu'en 8i, il n'est pas possible d'affecter directement un varchar2 dans un clob :
    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
    SQL> show release
    release 801070000
    SQL> CREATE OR REPLACE FUNCTION x ( t IN VARCHAR2 ) RETURN CLOB
      2  IS
      3    LC$Clob CLOB := t ;
      4  BEGIN
      5     RETURN LC$clob ;
      6  END ;
      7  /
    Warning: Function created with compilation errors.
     
    SQL> show err
    Errors for FUNCTION X:
    LINE/COL ERROR
    -------- -----------------------------------------------------------------
    3/11     PL/SQL: Item ignored
    3/19     PLS-00382: expression is of wrong type
    5/4      PL/SQL: Statement ignored
    5/11     PLS-00320: the declaration of the type of this expression is
             incomplete or malformed
    Par contre en 9i, cela fonctionne

  12. #12
    Membre habitué
    Inscrit en
    Avril 2004
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 12
    Par défaut
    je suis debutant en oracle et mon client est en 8i !
    mes contrainte etant de l'ordre de plus de 6000 caracteres en sortie de fonction comment puis je faire en 8i ?

    j'avou ne pas maitriser oracle surtout en 8i, j'ai fait la meme fonction en 9 et ca marche super bien mais la je suis bloqué .

  13. #13
    Expert confirmé
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Par défaut
    Peut-être faut-il passer par le package DBMS_LOB......

  14. #14
    Membre émérite Avatar de plabrevo
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    548
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 548
    Par défaut
    Le plus dur devient de trouver des instances 8i pour tester:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    CREATE OR REPLACE FUNCTION my_convert 
     (p_string     IN VARCHAR2 ) 
    RETURN CLOB
     
    IS
    my_lob   CLOB;
     
    BEGIN
    dbms_lob.createtemporary(my_lob,true,dbms_lob.call);
    dbms_lob.writeappend(my_lob,LENGTH(p_string),p_string);
    RETURN my_lob;
    END ;
    /
    Ca m'interesserai qu'on lance un sondage pour savoir quelle est la proportion d'utilisateurs de (7 non!), 8.0(?!), 8i, 9i, 9iR2, 10g, 10gR2, etc.

  15. #15
    Membre habitué
    Inscrit en
    Avril 2004
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 12
    Par défaut
    bonjour
    ca ma l'air bien ce que tu me presente je vais essayer, le package est present par defaut dans 8i ?

    merci pour l'aide

  16. #16
    Membre habitué
    Inscrit en
    Avril 2004
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 12
    Par défaut
    ca marche je vais reconstruire etape par etape ma fonction recursive.
    je te tiens au courant .

    ca fait plaisir de trouver une issue !

    mille merci

  17. #17
    Membre habitué
    Inscrit en
    Avril 2004
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 12
    Par défaut
    ca marche je vais reconstruire etape par etape ma fonction recursive.
    je te tiens au courant .

    ca fait plaisir de trouver une issue !

    mille merci

  18. #18
    Membre habitué
    Inscrit en
    Avril 2004
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 12
    Par défaut
    ca marche bien , cependant y a t'il moyen d'avoir un moniteur sur les reference en memoire.

    histoire de ne pas surcherger la ram inutilement

Discussions similaires

  1. Type CLOB sous forms 9 i?
    Par maradi dans le forum Forms
    Réponses: 0
    Dernier message: 26/12/2007, 17h36
  2. Insertion dans la colonne de type CLOB
    Par Sabact dans le forum SQL
    Réponses: 7
    Dernier message: 18/10/2007, 09h35
  3. Réponses: 9
    Dernier message: 20/06/2007, 17h34
  4. Parsing XML gestion DB I/O sur des données de type CLOB
    Par stchitembo dans le forum Oracle
    Réponses: 5
    Dernier message: 22/03/2006, 11h14
  5. [JDBC] Affichage d'une valeur de type CloB
    Par Jihed Amine Maaref dans le forum JDBC
    Réponses: 3
    Dernier message: 07/04/2005, 15h03

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