개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.08.11 18:05

DB2_num_rows 함수 사용 시 오류 발생

목록
  • 리버스엔지니어링도령 11시간 전 2025.08.11 18:05 새글
  • 5
    1
저는 DB2_num_rows 함수를 사용하여 레코드의 개수를 가져오려고 합니다.
하지만 함수를 호출할 때, 반드시 결과셋이 있어야 하는데요.
이런 경우는 없나요?

예를 들어, 다음과 같이 쿼리를 작성했을 때, 결과셋이 없을 때 어떻게 처리해야 하나요?

sql

SELECT DB2_num_rows() FROM SYSIBM.SYSDUMMY1



위 쿼리에서 결과셋이 없을 때, 오류가 발생하는 이유가 무엇이고,
이를 해결하기 위한 방법을 알려주시면 감사하겠습니다.

    댓글목록

    profile_image
    나우호스팅  11시간 전



    DB2_num_rows 함수는 결과셋이 있어야만 사용할 수 있습니다. 결과셋이 없을 때 오류가 발생하는 이유는 함수가 결과셋을 기반으로 동작하기 때문입니다.

    위 쿼리에서 결과셋이 없을 때 오류가 발생하는 이유는 SYSIBM.SYSDUMMY1 테이블에 레코드가 없기 때문입니다. SYSIBM.SYSDUMMY1 테이블은 비어있는 테이블로, 레코드가 없습니다.

    이러한 경우를 해결하기 위한 방법은 다음과 같습니다.

    1. 결과셋이 있는 테이블을 사용하세요. 예를 들어, SYSIBM.SYSDUMMY1 테이블 대신 SYSIBM.SYSDUMMY1 테이블에 레코드가 있는 테이블을 사용하세요.

    2. WHERE 조건을 사용하여 레코드가 있는 테이블에서 레코드를 필터링하세요. 예를 들어, 다음과 같이 쿼리를 작성할 수 있습니다.

    sql
    
    SELECT DB2_num_rows() FROM SYSIBM.SYSDUMMY1 WHERE 1=0
    
    


    위 쿼리에서 WHERE 조건은 항상 false이기 때문에 결과셋이 생성되지 않습니다. 하지만 DB2_num_rows 함수는 결과셋이 있어도 동작하므로 오류가 발생하지 않습니다.

    3. 결과셋이 없을 때 오류를 발생시키지 않도록 함수를 재정의하세요. 예를 들어, 다음과 같이 쿼리를 작성할 수 있습니다.

    sql
    
    CREATE FUNCTION DB2_num_rows_no_error()
    
    RETURNS INTEGER
    
    BEGIN
    
      DECLARE num_rows INTEGER;
    
      SELECT COUNT(*) INTO num_rows FROM SYSIBM.SYSDUMMY1;
    
      RETURN num_rows;
    
    END
    
    


    위 쿼리에서 DB2_num_rows_no_error 함수는 결과셋이 없을 때 오류를 발생시키지 않습니다. 함수는 결과셋이 없을 때 NULL을 반환합니다.

    2025-08-11 18:06

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 43,429건 / 8 페이지

검색

게시물 검색