oracle批量更新表的大字段值

2021-05-24 14:10:46 字數 1690 閱讀 5937

blob型別字段

1.前提 id=316083730656 的content欄位有值

update docs set content=empty_blob()

where id<>316083730656

declare

src_blob blob;

v_blob blob;

amount binary_integer;

offset integer;

cursor testcursor is

select content

from docs

where  id<>316083730656 and format='.pdf'

for update ;

begin

select content into src_blob from docs where id = 316083730656 for update;

open testcursor;

loop

fetch testcursor into v_blob ;

dbms_lob.open(src_blob, dbms_lob.lob_readwrite);

dbms_lob.open(v_blob, dbms_lob.lob_readwrite);

amount := lengthb(src_blob);

offset := 1;

dbms_lob.copy(v_blob,src_blob, amount, offset,offset);

dbms_lob.close(v_blob);

dbms_lob.close(src_blob);

exit when testcursor%notfound;

end loop;

close testcursor;

end;

clob型別字段

1.前提 id=316688448842 的clob型別的abstract欄位字段有值

update docs set abstract=empty_clob()

where id <> 316688448842

declare

src_clob clob;

v_clob clob;

amount integer;

offset integer;

cursor testcursor is

select abstract

from docs

where  id<>316688448842

for update ;

begin

select abstract into src_clob from docs where id = 316688448842 for update;

open testcursor;

loop

fetch testcursor into v_clob ;

dbms_lob.open(src_clob, dbms_lob.lob_readwrite);

dbms_lob.open(v_clob, dbms_lob.lob_readwrite);

注意。前面的update語句一定要先執行。要不再做批量更新的時候會提示錯誤的。

這裡更新的值為同乙個值可以在迴圈的時候獲取不同的值來進行更新。

Oracle批量更新

需求 將t2 t statbuf 表中id和t1 t mt 表相同的記錄更新進t1表。1.錯誤的寫法 1update table name t1 set a,b,c select a,b,c from table name 2 t2 where t1.a t2.a 這種寫法,會更新t1表中的所有行 ...

oracle批量為表增刪字段

create or replace procedure add column as declare在oracle中指代的是 塊 用於處理一段業務邏輯的 declare 動態表表名字首 tbl name prefix nvarchar2 255 表名 tbl name nvarchar2 255 欄位...

表批量更新

通過指令碼,更改表結構 不同的資料庫,更新語句不同,請注意 oracle資料庫 alter table tb md task add pk dept varchar2 20 sqlserver資料庫 alter table tb md task add pk dept nvarchar 20 由於資...