inconsistent datatypes: expected - got CLOB錯誤一例
測試人員反映說有個SQL在其中一個測試環境能正常執行,但在另一個測試環境卻無法執行,錯誤為:
ORA-00932: inconsistent datatypes: expected - got CLOB
開始懷疑是不是表中有CLOB欄位導致,但是檢視了一下相關的表結構,沒有CLOB、BLOB等型別的欄位。接著分析SQL,有個地方引起了我的注意,在這個SQL中,使用的WMSYS.WM_CONCAT這個函式。分別在兩個測試環境檢視這個函式的定義,發現了區別:
執行正確的庫的WM_CONCAT定義:
SQL> desc wmsys.wm_concat FUNCTION wmsys.wm_concat RETURNS VARCHAR2 Argument Name Type In/Out Default? ------------------------------ ----------------------- ------ -------- P1 VARCHAR2 IN
執行異常的庫的WM_CONCAT定義:SQL> desc wmsys.wm_concat FUNCTION wmsys.wm_concat RETURNS CLOB Argument Name Type In/Out Default? ------------------------------ ----------------------- ------ -------- P1 VARCHAR2 IN
這兩個函式的返回值是不一樣的!執行錯誤的庫返回CLOB,難怪會報inconsistent datatypes: expected - got CLOB的錯誤。但是為什麼會這樣呢?上metalink找找答案看。用WM_CONCAT作為關鍵字搜尋,真搜到了這麼一篇文章[ID 1300595.1],對此問題作出了詳細說明。Oracle的解釋是WM_CONCAT是Workspace Manager中的一個內部函式,可能會隨著資料庫版本的不同函式也會不同。在10.2.0.4/11.1.0.7/11.2.0.1中WM_CONCAT返回的是VARCHAR2,而在10.2.0.5/11.2.0.2中返回值為CLOB。所以兩個庫的函式定義不同也就可以理解了。所以Oracle是不建議使用WM_CONCAT這類內部函式(internal undocumentd function)的,而且對由於使用這類函式所導致的損失,Oracle也是不負責的,而且這類函式的更改也不會通知使用者。所以要使用這類函式,一定要三思而後行!
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/13885898/viewspace-1651554/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 執行時報錯RuntimeError: expected device cpu but got device cuda:0ErrordevGo
- yolov5 train報錯:TypeError: expected np.ndarray (got numpy.ndarray)YOLOAIErrorGo
- ORA-00600: [qerrmObnd1], [932], [ORA-00932: inconsistent datatypes
- EXP-00056: ORACLE error 932 encountered(ORA-00932: inconsistent datatypes)OracleError
- 交易資訊被篡改 錯誤碼:CONTEXT_INCONSISTENTContext
- Expected mime type application/octet-stream but got text/html.APPGoHTML
- xcode6編譯錯誤,提示Expected a typeXCode編譯
- vue報錯:[Vue warn]: Invalid prop: type check failed for prop "value". Expected Number, got String....VueAIGo
- [ORACLE-ORA]EXP-56 ORA-00932 (Inconsistent Datatypes) EXP ID 339938.1Oracle
- python問題:IndentationError:expected an indented block錯誤解決PythonErrorBloC
- PyTorch出現錯誤“RuntimeError: Found dtype Double but expected Float”PyTorchError
- SQL server 7安裝錯誤一例SQLServer
- 儲存過程中DDL錯誤一例儲存過程
- 如何處理Eclipse錯誤訊息 The declared package does not match the expected packageEclipsePackage
- ORA-03113錯誤解決一例
- RMAN-06133 錯誤解決一例
- VARCHAR2轉換為CLOB碰到ORA-22858錯誤
- MySQL 5.6 GTID常見錯誤解決一例MySql
- opatch java.lang.OutOfMemoryError:Java heap space錯誤一例JavaError
- ORA-02063錯誤解決一例
- OGG-00751錯誤處理一例
- ORA-12514: 錯誤解決一例
- [Vue warn]: Invalid prop: type check failed for prop "unlinkPanels". Expected Boolean, got String with value "true".VueAIBooleanGo
- shell指令碼報錯:"[: =: unary operator expected"指令碼
- hell指令碼報錯:"[: =: unary operator expected"指令碼
- client backup was not attempted because backup window closed 錯誤解決一例client
- 【UNION】ORA-01790錯誤模擬及分析一例
- OGG-01031錯誤處理一例
- Linux共享連結庫錯誤解決一例(轉)Linux
- AIX的tar錯誤:0511-194 Reached end-of-file before expected.AI
- "Got a packet bigger than 'max_allowed_packet' bytes"錯誤解決辦法Go
- ASM DISK Group載入ORA-15183錯誤一例ASM
- ORA-02019錯誤解決一例
- 文件筆記--Datatypes筆記
- 【問題處理】Error accessing PRODUCT_USER_PROFILE錯誤一例Error
- GCS shadows traversed, 4001 replayed 錯誤解決一例GC
- 通過sql跟蹤解決ORA-00942錯誤一例SQL
- Oracle內部錯誤:ORA-07445[_memcpy()+52] [SIGSEGV]一例OraclememcpyGse