Background Image

FORUM

조회 수 204 추천 수 0 댓글 7
?

단축키

Prev이전 문서

Next다음 문서

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


* 질문 등록 시 다음의 내용을 꼭 기입하여 주세요.

OS
리눅스
CUBRID Ver.
11.2
CUBRID TOOL Ver.
윈도우 10 . sqlgate 
응용 환경(API)
java, php, odbc 등 입력


* CUBRID 응용 오류, SQL 오류 또는 SQL 튜닝 관련된 문의는 반드시 다음의 내용을 추가해 주세요. 비밀글이나 비밀 댓글도 가능합니다.
* 저희가 상황을 이해하고, 재현이 가능해야 알 수 있는 문제들이 많습니다. 가능한 정보/정황들을 부탁합니다.

 

에러 내용 및 재현 방법 재현 가능한 Source와 SQL
관련 테이블(인덱스, 키정보 포함) 정보 CUBRID 홈 디렉토리 아래 log 디렉토리 압축

쿼리오류_01_20220812.jpg

 

쿼리오류_02_20220812.jpg

 

 

쿼리1

select 
       chg_cnt,
       IF(GET_MT_NO_1(reg_no, rank_no) is null AND GET_MT_NO1_1(reg_no, rank_no) is null,'','공동담보등록@') AS tt
       
from mort_his               
where reg_no='000125'

 

 

쿼리2

select 
       
       IF(GET_MT_NO_1(reg_no, rank_no) is null AND GET_MT_NO1_1(reg_no, rank_no) is null,'','공동담보등록@') AS tt,
       chg_cnt
       
from mort_his               
where reg_no='000125'

 

 

 

 

 

두 쿼리의 차이점은 chg_cnt 컬럼의 조회 순서 입니다.

쿼리 1은  오류

Error : [-889] Stored procedure execute error: java.lang.NullPointerException

 

쿼리 2는 성공 

 

무슨 차이 일까요??

 

 

 

  • ?
    엄기호 2022.08.11 11:38
    큐브리드 이용해주셔서 감사합니다.

    쿼리 1 : from 위에 "콤마"가 있네요. 한번 확인 해주시면 좋겠습니다.
    select ...................................
    IF(GET_MT_NO_1(reg_no, rank_no) is null AND GET_MT_NO1_1(reg_no, rank_no) is null,'','공동담보등록@'),
    from mort_his
  • ?
    ozro 2022.08.11 13:23
    제가 문의사항에 글을 쓰다 , 가 표시된것 같습니다. 위에 오류 화면을 첨부해 놓겠습니다.
  • ?
    유형규 2022.08.11 15:06
    https://www.cubrid.org/manual/en/11.2/admin/control.html#java-log
    저장 프로시저 실행 중 JVM에서 발생하는 에러는 CUBRID 폴더의 log/<db_name>.java.log 파일에 더 자세한 내용이 기록됩니다.
    해당 파일을 올려주시면 오류 분석에 더 도움이 될 것 같습니다.
    감사합니다.
  • ?
    ozro 2022.08.12 09:15

    쿼리를 좀 간단하게 수정하여 다시 질문 글을 만들었습니다. 로그 파일은 첨부해 두었습니다.

     

     

    CREATE TABLE [DBO2].[mort_his] (
           [reg_no] CHARACTER VARYING(6) NOT NULL,
           [rank_no] NUMERIC(3,0) NOT NULL,
           [reg_dt] CHARACTER VARYING(8) NOT NULL,
           [acc_dt] CHARACTER VARYING(8),
           [acc_no] CHARACTER VARYING(5),
           [seq_no]   NUMERIC(2,0) NOT NULL,
           [s_seq_no] NUMERIC(2,0) NOT NULL,
           [armk_no]  NUMERIC(2,0) NOT NULL,
           [ers_yn] CHARACTER VARYING(1),
           [b_apl_yn] CHARACTER VARYING(1),
           [ers_seq] NUMERIC(2,0),
           [reg_o_cd] CHARACTER VARYING(6),
           [mt_ca_dt] CHARACTER VARYING(8),
           [mt_ca_cd] CHARACTER VARYING(4),
           [chg_cnt] CHARACTER VARYING(32000),
           [mx_amt] NUMERIC(9,0),
           [etc] CHARACTER VARYING(80),
           [armk_lst] CHARACTER VARYING(100),
           [cud_gbn] CHARACTER VARYING(1),
           [cre_usr] CHARACTER VARYING(20),
           [cre_dt] DATETIME,
           [upd_usr] CHARACTER VARYING(20),
           [upd_dt]   DATETIME,
           [armk_no2] NUMERIC(2,0),
           [armk_no3] NUMERIC(2,0),
           [armk_no4] NUMERIC(2,0),
           [apply_yn] CHARACTER VARYING(1) DEFAULT '0',
           [chg_cnt_chg] CHARACTER VARYING(10) DEFAULT '0',
           [reg_o_cd_sub] CHARACTER VARYING(100) DEFAULT '',
           CONSTRAINT [pk_mort_his_reg_no_rank_no]
                  PRIMARY KEY ([reg_no], [rank_no])
    )
    REUSE_OID,
    COLLATE utf8_bin

  • ?
    유형규 2022.08.16 11:36

    해당 오류는 저장 프로시저/함수 구현에서 실행 시(런타임)에 발생합니다.
    혹시 함수에서 Default Connection (https://www.cubrid.org/manual/ko/11.2/sql/jsp.html#jdbc)을 생성해서 SQL 질의를 실행할까요?
    SQL 실행 시 오류가 발생하여 Exception이 발생했을 가능성이 있습니다.
    만약 Default Connection을 생성하지 않는다면, 함수 구현 부분에서 Null을 가진 객체를 access 하는 경우를 생각해볼 수 있을 것 같습니다.
    GET_MT_NO_1 함수의 대략적인 구현을 알면 문제 파악에 더 도움이 될 것 같습니다.

  • ?
    ozro 2022.08.16 16:01
    con = DriverManager.getConnection(url, user, password);

    con = DriverManager.getConnection("jdbc:default:connection:");

    두 가지 방식 모두 동일한 오류 메시지가 나옵니다.

    함수 구현
    public static String GET_MT_NO_1(String p1,String p2){
    String str = "";
    PreparedStatement ps;
    ResultSet rs;
    String sql = " SELECT '제'||MT_R_NO||'호' as value_"+
    " FROM COMMORT_HIS "+
    " WHERE REG_NO = ? "+
    " AND RANK_NO = ? "+
    " AND ERS_YN = 1"+
    " ORDER BY MT_R_NO";
    try {
    ps = getConnection("dbo2","dbo2").prepareStatement(sql);
    ps.setString(1, p1);
    ps.setString(2, p2);
    rs = ps.executeQuery();
    while(rs.next()){
    str += rs.getString("value_")+" ";
    }
    } catch (SQLException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }

    if(!"".equals(str)){
    str = str.trim();
    String gbn_str = str.substring(str.length()-1, str.length());
    }

    System.out.println("GET_MT_NO_1:::str:::"+str);
    return str;
    }

    이런 함수 입니다.


    select
    GET_MT_NO_1(reg_no,rank_no)
    --IF(GET_MT_NO_1(reg_no,rank_no) is null,'','공동담보등록@') AS tt
    from mort_his
    where reg_no='000125'

    --> 잘 조회됨

    select
    chg_cnt, GET_MT_NO_1(reg_no,rank_no)
    --IF(GET_MT_NO_1(reg_no,rank_no) is null,'','공동담보등록@') AS tt
    from mort_his
    where reg_no='000125'

    --> 오류

    다른 함수를 chg_cnt 뒤에 조회해도 모두 오류.
    각자 조회하면 분명히 조회 잘 되고 있습니다.
  • ?
    엄기호 2022.08.18 17:25 Files첨부 (2)

    위 내용에 대로 테스트를 하면 컴파일 시 getConnection("dbo2","dbo2").prepareStatement(sql); 에러가 발생하여
    아래의 내용으로 변경하여 테스트를 진행해 봤습니다. "에러는 발생하지 않습니다.."
    (테이블(COMMORT_HIS) 레이아웃이 없어 임의로 만들어서 하였음.)

    아래의 내용을 추가 및 변경하여 한번 수행 해보시면 좋겠습니다.
    Connection con = null; --> 추가

    String str = "";
    PreparedStatement ps;
    ResultSet rs;

    try {
    ps = getConnection("dbo2","dbo2").prepareStatement(sql);
    ----> 아래의 내용대로 변경
    con = DriverManager.getConnection("jdbc:default:connection:");
    ps = con.prepareStatement(sql); --> 변경
    .....................

     

     

    수행 결과

    test_1.JPG

     

    test_2.JPG

     


    감사합니다.


List of Articles
번호 제목 글쓴이 날짜 조회 수
공지 CUBRID 사용자를 위한 DBeaver 도구 출시 안내 admin 2024.04.23 42
공지 SQLGate for CUBRID 영구 무료 라이선스 제공 file admin 2020.04.09 4458
3994 회원가입이 3명이상 안돼요.. 1 딩이 2010.07.08 7846
3993 회사 서버에 접속을 할려면 설정이 다른가요? 2 후니 2009.07.14 10577
3992 홈경로 databases.txt 질문드립니다 1 큐브리드드 2023.07.17 92
3991 홀따옴표 처리 문의 1 초보 2010.04.15 14679
3990 혼합형 데이터 정렬방법 1 큐키 2021.06.11 85
3989 혼합형 데이터 정렬 방법 1 큐키 2021.06.14 265
3988 혹시 큐브리드매니저 자동완성 끄는 기능 있나요 2 안지민 2012.09.05 6036
3987 혹시 큐브리드 매니져 기본글꼴을 고정폭으로 해주실 생각은 없으신가요... 1 안지민 2012.12.20 5768
3986 혹시 PHP5.3.0 버전에서 모듈 설치되신분 계신가요??? 4 senseplus 2009.07.13 9394
3985 혹시 MMDB 지원하나요? 1 tekkal 2009.01.31 17480
3984 호스트 추가시 발생되는 오류에 대해 문의 합니다. 1 거북이사촌 2015.01.06 5259
3983 호스트 추가 질문입니다. 7 몽유객 2010.12.21 13808
3982 호스트 추가 1 karay2k 2011.12.17 17928
3981 호스트 연결이 안됩니다. 3 file 미드소나 2013.01.01 7752
3980 호스트 연결이 안되요.(비밀번호오류) 2 양희종 2011.09.06 13919
3979 호스트 연결이 무한 로딩도네요 1 file 큐브리드사용자 2022.10.20 119
3978 호스트 연결이 되지 않습니다. 3 file Juooon 2013.07.24 9235
3977 호스트 연결 에러 3 secret PJEPJE 2016.01.28 10
3976 형변환 오류 문의 1 삽질중 2009.12.30 12969
3975 현재 큐브리드 7.1 을 사용하고 있는데요 1 헬리 2009.10.01 8770
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 200 Next
/ 200

Contact Cubrid

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