不可以的,必须先插入再修改clob列

解决方案 »

  1.   

    DECLARE
      v_CLOBlocator CLOB;
      v_BLOBlocator BLOB;
    BEGIN
      -- Initializes the clob_col to the specified string, and returns the
      -- locator into v_LOBlocator.
      INSERT INTO lobdemo (key, clob_col)
        VALUES (20, 'abcdefghijklmnopqrstuvwxyz')
        RETURNING clob_col INTO v_CLOBlocator;  -- Modifies blob_col for the same row.
      UPDATE lobdemo
        SET blob_col = HEXTORAW('00FF00FF00FF')
        WHERE key = 20;  -- Retrieves the locator for the newly updated value, not the value
      -- itself.
      SELECT blob_col
        INTO v_BLOBlocator
        FROM lobdemo
        WHERE key = 20;
    END;
      

  2.   

    INSERT INTO lobdemo (key, clob_col, blob_col, bfile_col)
      VALUES (-1, EMPTY_CLOB(), EMPTY_BLOB(), NULL);INSERT INTO lobdemo (key, clob_col, blob_col, bfile_col)
      VALUES (1, 'abcdefghijklmnopqrstuvwxyz',
                 HEXTORAW('000102030405060708090A0B0C0D0E0F'),
                 NULL);
    INSERT INTO lobdemo (key, clob_col, blob_col, bfile_col)
      VALUES (2, 'A Quick Brown Fox Jumps Over the Lazy Dog',
                 HEXTORAW('FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0'),
                 NULL);
    COMMIT;
      

  3.   

    对阿,我就是先插入一个empty_clob(),
    但是我想直接用sql语句 修改clob列,而不是用
    DECLARE
           lobloc CLOB;
         BEGIN
           --Initialize buffer with data to be inserted
           SELECT col_clob INTO lobloc  -- get LOB handle
             FROM table_clob;
           dbms_lob.write(...);
           COMMIT;
         END;
    这样的形式。
      

  4.   

    thx, i will try it