2016-06-12 59 views
1

错误:在Oracle 11g中得到错误

ORA-00932: inconsistent datatypes: expected NUMBER got CHAR

SQL:

SELECT CASE WHEN 
(
SELECT COUNT(COMP_CODE) FROM COMPANY_MASTER 
)=0 THEN 1 
ELSE 
(
SELECT LPAD((SELECT MAX(COMP_CODE)+1 FROM COMPANY_MASTER),3, 0) NOS FROM DUAL 
) 
END AS DOCNO FROM DUAL; 

回答

3

中的if-else的两个分支应返还相同种类。如果else分支返回一个字符串(这是返回值lpad),那么if分支也应该如此。例如:

SELECT CASE WHEN 
(
SELECT COUNT(COMP_CODE) FROM COMPANY_MASTER 
)=0 THEN '1' -- '1' is a string literal 
ELSE 
(
SELECT LPAD((SELECT MAX(COMP_CODE)+1 FROM COMPANY_MASTER),3, 0) NOS FROM DUAL 
) 
END AS DOCNO FROM DUAL;