database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
ㆍOracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
Oracle Q&A 41637 게시물 읽기
No. 41637
SELECT에서의 NULL 때문에 계산이 오류가 납니다.
작성자
애기씨
작성일
2018-10-01 09:12:46
조회수
270

--오류코드

BEGIN

SELECT SUM(NVL(DECODE(....),0)) INTO VAR

EXCEPTION

WHEN NO_DATA_FOUND THEN

VAR := 0 ;

END ;

 

VAR2 := VAR + 1 ; -- VAR가 NULL이기 때문에 VAR2도 NULL

 

--DEBUG코드

SELECT NVL(SUM(DECODE(...)),0)

 

질문. 코드는 위와 같고

EXCEPTION에서 VALUE의 NULL값을 캐치할 수 있는 방법이 없을까요?

 

이 글에 대한 댓글이 총 3건 있습니다.

- 변경전 : SUM(NVL(DECODE(...), 0))
- 변경후 : NVL(SUM(DECODE(...))
, 0)

마농(manon94)님이 2018-10-01 09:57:29에 작성한 댓글입니다.
이 댓글은 2018-10-10 14:18:26에 마지막으로 수정되었습니다.

마농님 감사합니다.

저도 같은 방법으로 코드는 코쳤는데

EXCEPTION 에서 체크할 수 있는 방법은 없는 건가보네요

 

 

애기씨님이 2018-10-01 10:16:40에 작성한 댓글입니다. Edit

예외가 발생해야 Exception 을 타죠.
SUM() 집계 결과가 NULL 이 나오는 것은 정상입니다.
NULL 이 1건 나오는 것과
아무것도 나오지 않는 것은 다릅니다. (0 ROW, no_data_found)
no_data_found 가 발생하려면?
집계 쿼리에 group by 가 있으면 no_data_found 가능합니다.
group by 가 없는 전체 집계 쿼리는 항상 1행의 결과를 반환합니다.
group by 가 있는 집계 쿼리는 group by 기준 항목의 종류수 만큼의 행을 반환합니다.
억지로 GROUP BY 1 과 같은 코드를 넣어 줄 수는 있겠지만.
굳이 이렇게 해야할 이유는 없을 것 같습니다.

마농(manon94)님이 2018-10-01 10:28:57에 작성한 댓글입니다.
이 댓글은 2018-10-01 10:31:53에 마지막으로 수정되었습니다.
[Top]
No.
제목
작성자
작성일
조회
41640쿼리질문합니다 [1]
초보
2018-10-05
244
41639NULL값과 특정값을 같이 조회하고 싶습니다 [1]
노진규
2018-10-02
263
41638PL/SQL로 서버로직을 짜는게 그렇게 잘못된 일인가요? [3]
C++
2018-10-01
331
41637SELECT에서의 NULL 때문에 계산이 오류가 납니다. [3]
애기씨
2018-10-01
270
41636특정 테이블의 컬럼별 데이터 조회 [2]
k62511
2018-09-29
277
41635문자열 변환 문의드립니다. [8]
김대훈
2018-09-27
328
41634매트릭스 자료작성(c,r,u,d) 급질문 [4]
입문자
2018-09-13
556
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2018 DSN, All rights reserved.
작업시간: 0.079초, 이곳 서비스는
	PostgreSQL v10.4로 자료를 관리합니다