【问题标题】:Getting error in oracle 11g在 oracle 11g 中出现错误
【发布时间】:2016-10-13 02:17:38
【问题描述】:
错误:
ORA-00932:不一致的数据类型:预期 NUMBER 得到 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;
【问题讨论】:
标签:
sql
oracle
select
oracle11g
【解决方案1】:
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;