【问题标题】: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;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-09-09
      • 1970-01-01
      • 2020-10-17
      • 1970-01-01
      • 1970-01-01
      • 2012-01-10
      • 1970-01-01
      • 2010-12-14
      相关资源
      最近更新 更多