表结构如下
字段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字段,且有多条记录,我要删除其中的一条记录,那不是实现不了么……???如何解决这样的问题??

解决方案 »

  1.   

    LONG类型列不能用在Select的以下子句中:where、group by、order by,以及带有distinct的select语句中。
      

  2.   

    可以通过全文索引解决这个问题
    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
    --这样就可以根据这个查询结果对象要删除的记录进行删除
      

  3.   

    建全文索引这个方法不能解决我的问题,因为我不能对数据库做改动,
    是否还有其他办法。。
    多谢各位的回答,hongqi162(失踪的月亮) 还记得你回答过我的问题的,再次谢谢。
      

  4.   

    关注这个问题。long有很多的限制,是不是在oracle中,用clob代替更好?或有更好的办法?
    如果可用clob代替?不知道会不会很占存储空间?