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 :

Mettre à jours une colonne CLOB dans une tabel


Sujet :

Oracle

  1. #1
    Membre du Club
    Inscrit en
    Février 2007
    Messages
    106
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 106
    Points : 57
    Points
    57
    Par défaut Mettre à jours une colonne CLOB dans une tabel
    Bonjour ,


    la question est dans le titre .

    aussi simple qu'elle soit cette action j'ai pas réussi à trouver une procedure bien expliquer sur le net ....

    pour precision je suis sous oracle 8 donc le update classique ne marche pas

    Merci d'avance pour votre aide

  2. #2
    Membre expérimenté Avatar de fatsora
    Profil pro
    Inscrit en
    Février 2006
    Messages
    1 103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 1 103
    Points : 1 332
    Points
    1 332

    asktom.oracle.com tahiti.oracle.com otn.oracle.com

    Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson.


    phrase chinoise issue du Huainanzi

  3. #3
    Membre du Club
    Inscrit en
    Février 2007
    Messages
    106
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 106
    Points : 57
    Points
    57
    Par défaut
    euuuh c'est du oracle 8.

  4. #4
    Membre du Club
    Inscrit en
    Février 2007
    Messages
    106
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 106
    Points : 57
    Points
    57
    Par défaut
    en fait en essayant cette commande :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    DECLARE
    local_lob CLOB;
    BEGIN
    SELECT CLOB_FRML_TEXT INTO local_lob
    FROM frml_text where str_name like 'xDSL%' FOR UPDATE;
     
    DBMS_LOB.APPEND(local_lob, '//kjhdkjhkqjhkjh//');
    j'obtiens : mais malheureusement le champs n'est pas mis à jour dans la base de donnée :
    anonymous block completed

  5. #5
    Membre expérimenté Avatar de fatsora
    Profil pro
    Inscrit en
    Février 2006
    Messages
    1 103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 1 103
    Points : 1 332
    Points
    1 332
    Par défaut
    Désolé mais ca fait des années que je n'ai plus d'Oracle 8

    OK ,

    J'ai essayé sous oracle 11G

    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
     
     
     
     
    > insert into frml_text values ('TITI');
     
    1 row created.
     
     
     
      1  DECLARE
      2  local_lob CLOB;
      3  BEGIN
      4  SELECT COL1 INTO local_lob
      5  FROM frml_text FOR UPDATE;
      6  DBMS_LOB.APPEND(local_lob, '//kjhdkjhkqjhkjh//');
      7* end;
      8  /
     
    PL/SQL procedure successfully completed.
     
    > select * from frml_text;
     
    COL1
    --------------------------------------------------------------------------------
    TITI//kjhdkjhkqjhkjh//
     
     
     
     
      1  update frml_text
      2  set col1=rpad('*',32000,'*')
      3* WHERE DBMS_LOB.compare (col1,'TOTO')=0
    > /
     
    1 row updated.
     
    > select * from frml_text;
     
    COL1
    --------------------------------------------------------------------------------
    TITI//kjhdkjhkqjhkjh//
    dqsffdqsffdqsffdqsffdqsffdqsffdqsffdqsffdqsffdqsffdqsffdqsffdqsffdqsffdqsffdqsff
    ********************************************************************************
    TOM KYTES

    Using Native Dynamic SQL this can be accomplished:

    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
     
    ops$tkyte@ORA817.US.ORACLE.COM> create table t
      2  ( x int primary key, y clob )
      3  /
     
    Table created.
     
     
    ops$tkyte@ORA817.US.ORACLE.COM> insert into t values ( 1, null );
     
     
     
     
    ops$tkyte@ORA817.US.ORACLE.COM> 
    ops$tkyte@ORA817.US.ORACLE.COM> insert into t values ( 1, null );
     
    1 row created.
     
    ops$tkyte@ORA817.US.ORACLE.COM> 
    ops$tkyte@ORA817.US.ORACLE.COM> 
    ops$tkyte@ORA817.US.ORACLE.COM> create or replace
      2  procedure update_clob( p_tname       in varchar2,
      3                         p_pkname   in varchar2,
      4                         p_pkval    in int,
      5                         p_clobName in varchar2,
      6                         p_clobVal  in varchar2 )
      7  is
      8      l_clob clob;
      9  begin
     10      execute immediate
     11      'begin
     12           update ' || p_tname || '
     13              set ' || p_clobName || ' = empty_clob()
     14            where ' || p_pkname || ' = :x
     15        returning ' || p_clobName || ' into :y;
     16       end;'
     17      USING IN p_pkVal, OUT l_clob;
     18  
     19      dbms_lob.writeappend( l_clob, length(p_clobVal), p_clobVal );
     20  end;
     21  /
     
    Procedure created.
     
    ops$tkyte@ORA817.US.ORACLE.COM> 
    ops$tkyte@ORA817.US.ORACLE.COM> exec update_clob( 't', 'x', 1, 'y', 'Hello World' );
     
    PL/SQL procedure successfully completed.
     
    ops$tkyte@ORA817.US.ORACLE.COM> select * from t;
     
             X Y
    ---------- 
    --------------------------------------------------------------------------------
             1 Hello World

    asktom.oracle.com tahiti.oracle.com otn.oracle.com

    Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson.


    phrase chinoise issue du Huainanzi

Discussions similaires

  1. Réponses: 4
    Dernier message: 12/03/2015, 11h46
  2. Mettre à jour après la suppression d'une colonne JTable
    Par info_t dans le forum Composants
    Réponses: 1
    Dernier message: 11/02/2013, 10h06
  3. Réponses: 3
    Dernier message: 29/03/2011, 20h38
  4. Réponses: 6
    Dernier message: 13/11/2009, 16h06
  5. Réponses: 7
    Dernier message: 09/06/2009, 21h51

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