关于long数据类型字段的问题,请各位看看
表结构如下
字段1:number
字段2:char
字段3:long型
……
在表中加入一条记录:
正确插入后,删除却出现如下问题……提示“ORA-00997: 非法使用 LONG 数据类型”
是否LONG型数据有这种限制:即 LONG型数据不能在delete操作中用作约束条件??在线等候,万分感谢……
另外:只要不附加“ and COL3 = 10”这个约束条件就可以正确执行
SQL> insert into TEST.TESTTBL1 values(100, 'a ',10);
已创建 1 行。
SQL> delete TEST.TESTTBL1 where COL1 = 100 and COL2 = 'a ' and COL3 = 10;
delete TEST.TESTTBL1 where COL1 = 100 and COL2 = 'a ' and COL3 = 10
*
ERROR 位于第 1 行:
ORA-00997: 非法使用 LONG 数据类型
SQL>
请问如果我表中只有一个long字段,且有多条记录,我要删除其中的一条记录,那不是实现不了么……???如何解决这样的问题??
------解决方案--------------------LONG类型列不能用在Select的以下子句中:where、group by、order by,以及带有distinct的select语句中。
------解决方案--------------------可以通过全文索引解决这个问题
create table t (cid int,clong long );
insert into t values( 1,1 );
insert into t values( 1,2 );
--创建全文索引
CREATE INDEX IDX_CLONG ON T(clong) INDEXTYPE IS CTXSYS.CONTEXT;
--执行查询
SELECT cID FROM t WHERE CONTAINS(clong, '1 ') > 0;
--查询结果
cid
1
--这样就可以根据这个查询结果对象要删除的记录进行删除
------解决方案--------------------学习
------解决方案--------------------关注这个问题。long有很多的限制,是不是在oracle中,用clob代替更好?或有更好的办法?
如果可用clob代替?不知道会不会很占存储空间?