1. 首页
  2. IT资讯

ORA-01461

From: http://lzfhope.blog.163.com/blog/static/6363992200911854940860/ 环境oracle 10g r2,windows ora-01461的标准说明是: ORA-01461 can bind a LONG value on

ly for insert into a LONG column Cause: An attempt was made to insert a value from a LONG datatype into another datatype. This is not allowed. Action: Do not try to insert LONG datatypes into other types of columns. ———————- 翻译为中文就是不能把Long类型数据绑定到非long列中,很直白吧! 一般的情况,咱们不说,就说一种特殊的情况,还是举个例子最好说明。 使用关键字values插入大于8000的varchar2。SQL> create table test_lob(OperationTime date,Sqls clob);Table createdSQL> SQL> Declare 2 vx Varchar2(32767); 3 Begin 4 For i In 1..3000 Loop 5 vx:=vx||’0123456789′; 6 End Loop; 7 Insert Into test_lob Values(Sysdate,vx); 8 End; 9 /PL/SQL procedure successfully completedSQL> commit;Commit complete另外一种写法使用子查询.SQL> Declare 2 vx Varchar2(32767); 3 Begin 4 For i In 1..3000 Loop 5 vx:=vx||’0123456789′; 6 End Loop; 7 –Insert Into test_lob Values(Sysdate,vx); 8 Insert Into test_lob 9 Select Sysdate,vx From dual;10 End;11 /Declare vx Varchar2(32767);Begin For i In 1..3000 Loop vx:=vx||’0123456789′; End Loop; –Insert Into test_lob Values(Sysdate,vx); Insert Into test_lob Select Sysdate,vx From dual;End;ORA-01461: 仅能绑定要插入 LONG 列的 LONG 值ORA-06512: 在 line 8 以上两个插入方法的差别在于语法不一样,前者是利用关键字values一条条插入,后面是使用子查询的方式插入。 无需要问为什么–事实就是这么回事。 从以上二种写法的差异来看,可以得出以下结论: 1)当用关键字values插入单条的时候,pl/sql可以把varchar2当作VARCHAR2插入到CLOB。 2)但用子查询的时候,超过8000的varchar2变量会被转化为LONG类型返回 之所以,有这样的情况出现,是因为oracle导致的,oracle大概现在只能这么处理。当超长的VARCHAR2出现在select列表中的时候,是当作CLOB存储还是LONG列来存储,这是涉及到很多地方的,修改起来不太方便。 还有关于程序bug的。 http://lzfhope.blog.163.com/blog/static/63639922009427114510786/

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/27042095/viewspace-759473/,如需转载,请注明出处,否则将追究法律责任。

主题测试文章,只做测试使用。发布者:布吉卡,转转请注明出处:http://www.cxybcw.com/196035.html

联系我们

13687733322

在线咨询:点击这里给我发消息

邮件:1877088071@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息

QR code