2014-02-18 674 views
0

我在運行查詢時出錯,我的錯誤與CLOB有關。我沒有找到解決我的問題。「ORA-00932:不一致的數據類型」與CLOB字段

我運行此查詢:

SELECT wm_concat(employee.id_employe) 
    FROM decision decs 
     LEFT OUTER JOIN decision_to_employee dec_emp 
         ON dec_emp.id_decision = decs.id_decision 
     LEFT OUTER JOIN employee employee 
         ON dec_emp.id_employee = employee.id_employe 
     LEFT OUTER JOIN employee_lang employee_lang 
         ON employee.id_employe = employee_lang.id_employe 
         AND employee_lang.lang_emp_lang = 'ar' 
    WHERE decs.id_decision = 'DEC-29' 
     AND dec_emp.type_to = 'to' 
     AND dec_emp.id_decision = decs.id_decision 
GROUP BY decs.id_decision 

UNION 
    SELECT wm_concat(unit_lang.id_unit) 
    FROM decision decs 
     LEFT OUTER JOIN decision_to_unit dec_unit 
         ON dec_unit.id_decision = decs.id_decision 
     LEFT OUTER JOIN unit_lang 
         ON unit_lang.id_unit = dec_unit.id_unit 
         AND unit_lang.lang_unit_lang = 'ar' 
    WHERE decs.id_decision = 'DEC-29' 
     AND dec_unit.type_to = 'to' 
     AND dec_unit.id_decision = decs.id_decision 
GROUP BY decs.id_decision 

但我有此錯誤:

[APP] WARN [http-8080-1] JDBCExceptionReporter.logExceptions(100) | SQL Error: 932, SQLState: 42000 
[APP] ERROR [http-8080-1] JDBCExceptionReporter.logExceptions(101) | ORA-00932: inconsistent datatypes ; expected: - ; got : CLOB 

我想,當我在查詢中使用Union這個錯誤出現。

已更新:

decision : 

ID_DECISION : varchar2(15) 
TEXT_DECISION : varchar2(4000) 
NB_PAGE_DECISION : varchar2(15) 
SUBJECT_DECISION : varchar2(15) 
DATE_CREATE : date 
USER_CREATE : varchar2(15) 
NUM_ORDRE_DECISION : varchar2(20) 
DATE_JC_DECISION : date 
DATE_HJR_DECISION : varchar2(15) 
TYPE_RECEIVE : varchar2(1) 
DATE_RECEIVE : date 
USER_RECEIVE : varchar2(15) 
ID_TYP_CORRESP : varchar2(15) 
ID_FOLDER : varchar2(15) 
DOC_LINK_CORRESP : varchar2(15) 

employee : 

ID_EMPLOYE : varchar2(15) 
ID_JOB : varchar2(15) 
ID_JOB : varchar2(15) 
TEL_EMPLOYE : varchar2(15) 
FAX_EMPLOYE : varchar2(15) 
MAIL_EMPLOYE : varchar2(100) 
STATUT : varchar2(1) 
CONFIDENTIEL : varchar2(1) 
NUM_IDENTITY : varchar2(15) 
ID_PORTAL : varchar2(100) 


employee_lang : 

ID_EMP_LANG : varchar2(15) 
ID_EMPLOYE : varchar2(15) 
FULLNAME_EMP_LANG : varchar2(500) 
ADDRESS_EMP_LANG : varchar2(500) 
LANG_EMP_LANG : varchar2(5) 
MATRICULE_EMP : varchar2(10) 

decision_to_employee 

ID_DECISION : varchar2(15) 
ID_EMPLOYEE : varchar2(15) 
TYPE_TO : varchar2(5) 



decision_to_unit : 

ID_DECISION : varchar2(15) 
ID_UNIT : varchar2(15) 
TYPE_TO : varchar2(5) 


unit_lang : 

ID_UNIT_LANG : varchar2(15) 
ID_UNIT : varchar2(15) 
ADDRESS_UNIT_LANG : varchar2(500) 
NBR_UNIT_LANG : varchar2(15) 
NAME_UNIT_LANG : varchar2(500) 
ABBREVIATED_NAME_UNIT : varchar2(15) 
LANG_UNIT_LANG : varchar2(5) 
+2

不知道你的字段類型,我們不能幫你。你能進一步解釋嗎? –

+0

組合子查詢是否有幫助? – Tibo

+0

謝謝你的回答,我更新了我的問題 – franco

回答

0

我覺得你的查詢有幾個問題:decs.id_decision = 'DEC-29'

  1. 你有numeric,這是錯誤的比較一個varchar
  2. 您正在使用wm_concat,這是無證的。改爲使用listagg
  3. 您正在對decs.id_decision進行分組,但未將其用於您的結果中,這對我沒有任何意義。
  4. 第一部分和第二部分之間有一個換行符。這可能會在某些環境中導致問題。把它放在一起。
+0

@franco:有什麼好運? –

+0

LISTAGG僅在Oracle 11g第2版中引入 –

0

您應該使用UNION ALL而不是UNION的 參考Ask Tom回覆此錯誤

相關問題