2014-05-20 50 views
1

我正在嘗試執行SQL查詢來查找在數據庫中的註釋字段內具有值的所有項目。然而,當我這樣做,我得到了下面的錯誤,這我不知道如何解決:如何在出現ORA-19011錯誤時搜索字段?

ORA-19011: Character string buffer too small 
19011. 00000 - "Character string buffer too small" 
*Cause: The string result asked for is too big to return back 
*Action: Get the result as a lob instead 

我使用的QUERTY如下:

select * 
from 
actionLog al 
where comments like '%GEM9_EM_SCFNY_TT%' 

任何幫助就如何修改我的查詢將非常感激。

感謝 邁克爾

+1

什麼類型是註釋? – EasterBunnyBugSmasher

回答

0

我一直沒能找到任何方式來證實這一點,但我懷疑like操作是導致CLOBcomments被隱式轉換爲varchar2。由於CLOB太大,您會收到錯誤消息。您可以解決此通過設計與CLOB數據類型,而不是工作的函數:

SELECT * 
FROM actionlog al 
WHERE DBMS_LOB.INSTR (comments, 'GEM9_EM_SCFNY_TT') <> 0 
+0

當我這樣做時,我得到以下錯誤錯誤 ORA-06553:PLS-306:調用'INSTR'時參數的錯誤數量或類型 06553. 00000 - 「PLS-%s:%s」 – Michaelb88

+0

註釋是XMLTYPE – Michaelb88

0

自一個XMLTYPE可以使用.getClobVal()函數。因此,如果你這樣做,你的代碼應該可以工作:

select * 
from 
actionLog al 
where comments.getClobVal() like '%GEM9_EM_SCFNY_TT%' 
相關問題