结合 上面两个看!
SQL> select * from v$version;
BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 -64bit Production
PL/SQL Release 11.2.0.1.0 - Production
CORE
11.2.0.1.0
Production
TNS for IBM/AIX RISC System/6000: Version 11.2.0.1.0 -Production
NLSRTL Version 11.2.0.1.0 - Production
SQL> CREATE TABLE T_VARCHAR (name clob);
表已创建。
情景1:
SQL> DECLARE
PL/SQL 过程已成功完成。
情景2:
SQL> DECLARE
DECLARE
*
第 1 行出现错误:
ORA-01461: 仅能绑定要插入 LONG 列的 LONG 值
ORA-06512: 在 line 4
SQL> DECLARE
PL/SQL 过程已成功完成。
SQL> DECLARE
DECLARE
*
第 1 行出现错误:
ORA-01461: 仅能绑定要插入 LONG 列的 LONG 值
ORA-06512: 在 line 4
情景3:
SQL> DECLARE
DECLARE
*
第 1 行出现错误:
ORA-01461: 仅能绑定要插入 LONG 列的 LONG 值
ORA-06512: 在 line 4
情景4:
SQL> DECLARE
PL/SQL 过程已成功完成。
情景5:
SQL> DECLARE
DECLARE
*
第 1 行出现错误:
ORA-01461: 仅能绑定要插入 LONG 列的 LONG 值
ORA-06512: 在 line 4
以上说明, 在pl/sql中,对一个多于4000的字符串做substr或sleect
from dual;时会 把这个字符转换成long型,所以报上面的错误。
SQL> DECLARE
DECLARE
*
第 1 行出现错误:
ORA-01704: 字符串文字太长
ORA-06512: 在 line 4
SQL> DECLARE
PL/SQL 过程已成功完成。
用execute immediate 语句时 也是有4000个字符的限制。虽然报的错不一样。。