往資料型別為clob的表列直接insert或update長度大於4000會報字串太長錯誤

shuangoracle發表於2011-07-19
SQL> drop table t;
Table dropped
SQL> create table t(para2 clob);
Table created
直接更新:
SQL> update t set para2 ='***...***';--8000個*
update t set para2 ='***...***';--8000個*
ORA-01704: string literal too long
SQL>
直接插入:
SQL> insert into t(para2) values('***...***');--8000個*
insert into t(para2) values('***...***');--8000個*
ORA-01704: string literal too long
可以通過PL/SQL用變數實現:
SQL> declare
2 v_sql clob;
3 begin
4 v_sql := rpad('*', 4000, '*') || rpad('*', 4000, '*');--8000個*
5 insert into t(para2) values(v_sql);
6 commit;
7 end;
8 /
PL/SQL procedure successfully completed
SQL> select * from t;
PARA2
----------------
***...***** --8000個*
SQL> select t.*,length(t.para2) para2_length from t;
PARA2 PARA2_LENGTH
-------------- ------------
***...***** (8000個*) 8000
[@more@]

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/24496749/viewspace-1052723/,如需轉載,請註明出處,否則將追究法律責任。

相關文章