CLOB字段的比较问题,请高手过目。谢谢!(192分)

  • 主题发起人 主题发起人 徐凤华
  • 开始时间 开始时间

徐凤华

Unregistered / Unconfirmed
GUEST, unregistred user!
没分了,诸位多包含。
数据库为ORACLE, 以下程序为什么会报错?
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('Select * From Event Where Note = :Note');
ADOQuery1.Parameters.ParamByName('Note').Value := 'dfdf';
ADOQuery1.Open;
其中Note为CLOB类型。
错误信息为:
ORA-00932:不一致的数据类型:要求 - 得到的却是CLOB。
特向高手求救,谢谢。
 
ADOQuery1.Parameters.ParamByName('Note').Asstring := 'dfdf';
//AsVariant
 
jsxjd厉害呀!
 
ADOQuery1.Parameters.ParamByName('Note').Asstring := 'dfdf';
这个可行的
 
LOB字段是不能这么用的,但是你可以象下面这样使用:
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('Select * From Event Where DBMS_LOB.SUBSTR(Note, DBMS_LOB.Getlength(Note)) = :Note');
ADOQuery1.Parameters.ParamByName('Note').Value := 'asdf';
ADOQuery1.Open;
虽然可以达到你的目的,但你要注意,CLOB最大是能达到2G的,如果你的数据量很大的话
这样的写法是很没有效率的,可能导致你的系统最终不可用。
最好的解决办法可能是使用Oracle的全文检索功能吧
或者把文档中的属性提取出来存到别的字段中以供检索。
 
接受答案了.
 
后退
顶部