Background Image

FORUM

조회 수 7177 추천 수 0 댓글 1
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

* 질문 등록 시 다음의 내용을 꼭 기입하여 주세요.
OS
Linux 64x
CUBRID Ver.
CUBRID 9.3.6.0002
CUBRID TOOL Ver.
CUBRID Manager 9.3.6.007
응용 환경(API)
java, jdbc

* CUBRID 응용 오류, SQL 오류 또는 SQL 튜닝 관련된 문의는 반드시 다음의 내용을 추가해 주세요. 비밀글이나 비밀 댓글도 가능합니다.
* 저희가 상황을 이해하고, 재현이 가능해야 알 수 있는 문제들이 많습니다. 가능한 정보/정황들을 부탁합니다.
에러 내용 및 재현 방법 재현 가능한 Source와 SQL
관련 테이블(인덱스, 키정보 포함) 정보 CUBRID 홈 디렉토리 아래 log 디렉토리 압축

-------------- 아래에 질문 사항을 기입해 주세요. ------------------------------------------------------------------------
Java 저장프로시저를 활용하여 CURSOR을 사용하려고 합니다.
Java에서 CURSOR을 호출 하였으나 NullPointerException 이 발생하여 문의드립니다.

public static ResultSet getPhone()
    {
        String qry = "SELECT * FROM PHONE";
        try
        {
            Connection conn = CubridConn.cubrid_conn();

            PreparedStatement stmt = conn.prepareStatement(qry, ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
            ResultSet rs = stmt.executeQuery();
            ((CUBRIDResultSet)rs).setReturnable();
            rs.last();
            int cnt = rs.getRow();
            System.out.println("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!RS CNT : " + cnt);

            return rs;
        }
        catch( Exception ex )
        {
            ex.printStackTrace();
        }
        return null;
    }

위 부분이 CURSOR의 JAVA부분입니다.

CREATE FUNCTION getPhone() RETURN CURSOR AS LANGUAGE JAVA
NAME 'PhoneNumber.getPhone() RETURN java.sql.ResultSet';

위 부분으로 Function(CURSOR) 생성 하였습니다.

public static void printPhone()
    {
        Connection conn = null;

        try
        {
            conn = CubridConn.cubrid_conn();
            CallableStatement stmt = conn.prepareCall("?=CALL getPhone()");
            stmt.registerOutParameter(1, Types.JAVA_OBJECT);
            stmt.execute();
            ResultSet rs = (ResultSet)stmt.getObject(1);

            if( rs == null )
            {
                System.out.println("!!!!!!!!!!!!RS IS NULL");
                rs.close();
                return;
            }
            rs.close();
        }
        catch( Exception ex )
        {
            ex.printStackTrace();
        }
    }

위 부분이 CURSOR을 호출 하는 부분이고

CREATE PROCEDURE printPhone() AS LANGUAGE JAVA
NAME 'PhoneNumber.printPhone()';

위 부분으로 프로시저를 작성하여 CUBRID Manager를 통해 프로시저를 호출하였습니다.

CURSOR 부분에 불러온 갯수를 찍도록 표시하였고 결과가 정상적으로 출력이 되었지만

printPhone에서는 계속 null 이라고 나오는데 확인 부탁드립니다.
  • ?
    이상신 2017.03.22 21:38

    안녕하세요 ~


     우선 getPhone() 

     ((CUBRIDResultSet)rs).setReturnable(); --> Error Multiple markers at this line - CUBRIDResultSet cannot be resolved to a type

    발생하여 주석 처리 후 TEST 진행 하였으며 결과 RS CNT 찍는것 까지 확인 하였습니다.


    null 발생원인은 SP 호출시 호출한 쿼리의 Connection을 계속 같이 사용하기에 

    아래 소스와 같이 기존 커넥션 null 처리 함으로서 발생한다 판단됩니다.

    public static void printPhone()
        {
            Connection conn = null;

    더 궁금한점이 있는 경우 해당 소스 전체을 보내 주십시오

    감사합니다.

List of Articles
번호 제목 글쓴이 날짜 조회 수
공지 CUBRID 사용자를 위한 DBeaver 도구 출시 안내 admin 2024.04.23 53
공지 SQLGate for CUBRID 영구 무료 라이선스 제공 file admin 2020.04.09 4458
1215 어떤 오류로그 인지 답변 좀 부탁드립니다. file 김상윤 2013.03.20 6173
1214 어떻게 해야하는건가요? 2 SoMa 2011.05.21 8233
1213 어찌해서 설치는됫는데.. 1 가루구 2009.02.16 14529
1212 어찌해서 설치는됫는데... 1 가루구 2009.02.17 14695
1211 언더바 문의 "_" 2 joke7 2014.07.17 8835
1210 언로드 후, 로드 시 데이터 정렬 순서가 역방향으로 바뀌는 것 관련해서... 1 file 차오이 2012.09.24 7124
1209 언로드 후, 로드가 안되는데 어떤 사항을 체크해 봐야 할까요? 2 secret 차오이 2011.08.23 18
1208 언어별 대표적인 orm 플러그인 개발 계획은 없으신지요? 1 서치 2014.05.05 9165
1207 엄청난 DB 생성 소요 시간 4 쭈난 2010.01.16 10071
1206 업그레이드 후 쿼리 수행시간이 길어졌습니다. 4 secret 노랑배 2011.12.22 12
1205 업데이트 보완 문제 해결요청 1 가라 가라~ 2009.01.20 17592
1204 에고 일일히 답변 달아주셨네요;; 1 송효진 2009.04.07 12995
1203 에러 내용 문의 2 yonggi 2021.09.01 155
1202 에러 로그 첨부 합니다. 5 file Philip Park 2020.10.15 168
1201 에러 메세지에 대해서 분석좀 부탁 드리겠습니다. 1 특수요원 2015.11.03 5065
1200 에러 메시지 문의드립니다. 4 file dashbell 2014.10.27 4065
1199 에러 문의 1 시나브로 2016.04.19 10438
1198 에러 질문 : cci_glo_load? 1 sugarkane 2010.11.15 8190
1197 에러 질문 드립니다.!! 1 file 마리오네트 2020.01.22 98
1196 에러 코드 관련 다시 질문 드립니다 1 kkckc 2009.03.18 11506
Board Pagination Prev 1 ... 135 136 137 138 139 140 141 142 143 144 ... 200 Next
/ 200

Contact Cubrid

대표전화 070-4077-2110 / 기술문의 070-4077-2113 / 영업문의 070-4077-2112 / Email. contact_at_cubrid.com
Contact Sales