2016-06-12 11 views
1

エラー:取得エラー

ORA-00932: inconsistent datatypes: expected NUMBER got CHAR

SQL:のif-elseの

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

両方のブランチは同じ型を返す必要があります。 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;