【问题标题】:Oracle - Update BLOB with PL/SQLOracle - 使用 PL/SQL 更新 BLOB
【发布时间】:2018-10-05 01:06:27
【问题描述】:

我需要使用 PL/SQL 更新表中预先存在的 BLOB 值。
我正在处理糟糕的表设计,列应该是 CLOB 并且不会改变。

我要执行的步骤: 1)选择BLOB 2) 将 BLOB 转换为 CLOB 3)修改CLOB 3) 将 CLOB 转换为 BLOB 4) 用新值更新 BLOB 列

第四步我不知道怎么做。我希望 BLOB 可以直接更新,但我发现的唯一示例是将文件读入 blob 列或使用另一种编程语言。

【问题讨论】:

    标签: oracle plsql sql-update blob


    【解决方案1】:

    我理解你的问题,但我认为肯定有另一个问题。

    解决方案

    更新一下吧..

    UPDATE myTable SET myBlobColumn = myBlob WHERE myCondition = 1;
    

    完整示例

    DECLARE
        myVarcharVar   VARCHAR2(1000);
        myClobVar   CLOB;
        myBlobVar   BLOB;
    BEGIN
        EXECUTE IMMEDIATE 'TRUNCATE TABLE TTEST'; -- ensure out testdata will be correct.
        INSERT INTO TTEST (myBlob, myClob, myVarchar) VALUES(utl_raw.cast_to_raw('1111'), '2222', '3333'); -- insert our data
    
        -- Attention: ONLY ONE ROW => NO WHERE-CONDITIONS to simplify the code!
    
        SELECT myVarchar INTO myVarcharVar FROM TTEST;
    
        UPDATE TTEST SET myClob = myVarcharVar;
    
        SELECT myClob INTO myClobVar FROM TTEST;
    
        UPDATE TTest SET myBlob = utl_raw.cast_to_raw(myClobVar);
    
        SELECT myBlob, myClob, myVarchar INTO myBlobVar, myClobVar, myVarcharVar FROM TTest;
    
        dbms_output.put_line('Blob:   ' || utl_raw.cast_to_varchar2(myBlobVar)); 
        dbms_output.put_line('Clob:   ' || myClobVar); 
        dbms_output.put_line('Varchar:' || myVarcharVar); 
    END;
    

    【讨论】:

      【解决方案2】:
      update table_name  set column_name = utl_raw.cast_to_raw ('value')  where id = 'your_id';
      

      【讨论】:

        猜你喜欢
        • 2018-12-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-05-20
        • 2012-02-15
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多