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 115
공지 SQLGate for CUBRID 영구 무료 라이선스 제공 file admin 2020.04.09 4474
3860 convert_password.exe가 실행이 안됩니다. 1 들뿔 2008.12.16 21541
3859 Cubrid + Hibernate 관련 해서 질문좀 드릴게요.ㅜㅠ 1 병관 2012.05.06 21530
3858 HA 구성 관련하여 기술문서가 따로 있나요? 1 책보는남자 2010.11.11 21527
3857 인코딩 관련 1 song 2008.12.17 21518
3856 "Token length is too long" 오류에 관하여 질문 드립니다. 4 file 김우람 2009.01.09 21478
3855 우분투에서 php + 큐브리드를 설치하고 있습니다. 2 희야 2009.01.25 21335
3854 이중화 관련 질문 하나 더 드립니다.^^ 2 kkckc 2009.02.18 21293
3853 0.5 이하 반올림 함수가 어떻게 되나요? 4 coolbyj 2009.10.22 21274
3852 order siblings by 문의 1 유쓰 2009.10.06 21109
3851 설치시 cub_cas.exe - 시작지점 없음 오류 2 file 백곰 2009.08.13 21100
3850 php에서 insert 값이 안들어가는 경우는 뭘까요? 4 레드오리 2008.12.20 21052
3849 C/C++ 지원하는 Connection Pool API 는 없나요? 2 tekkal 2009.02.03 21009
3848 The column name is invalid. 에러메시지 좀... 1 file 논픽션Lover 2009.07.02 20966
3847 Java Procedure 실행시 한글 깨짐 1 깨달음 2012.02.07 20935
3846 CUBRIDService 를 시작할수 없습니다. 5 file 오색무지개 2013.02.15 20916
3845 Failed to connect to database server, 에러관련 질문입니다. 4 석현진 2016.12.08 20845
3844 이젠 매니저가 ㅠㅠ 1 가루구 2009.02.17 20819
3843 OleDbCommand 를 사용하는데 다음 같은 에러가 발생합니다. 2번째.. 1 hades 2008.12.10 20815
3842 한글에 upper함수 적용하면 검색이 안되는 이유? 2 장비맨 2009.05.11 20805
3841 VIEW 생성 - SUM(DECODE(...))함수 사용에 대한 문의 1 kst 2013.10.30 20743
Board Pagination Prev 1 ... 3 4 5 6 7 8 9 10 11 12 ... 200 Next
/ 200

Contact Cubrid

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