我需要使用 PL/SQL 更新表中预先存在的 BLOB 值。
我正在处理糟糕的表设计,列应该是 CLOB 并且这不会改变。
我要执行的步骤:
第四步我不知道该怎么做。我希望 BLOB 可以直接更新,但我找到的唯一示例是将文件读入 blob 列或使用其他编程语言。
我理解你的问题,但我认为肯定还有另一个问题。
更新一下吧..
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;
update table_name set column_name = utl_raw.cast_to_raw ('value') where id = 'your_id';