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

     


    감사합니다.


  1. CUBRID 사용자를 위한 DBeaver 도구 출시 안내

    Date2024.04.23 Byadmin Views115
    read more
  2. SQLGate for CUBRID 영구 무료 라이선스 제공

    Date2020.04.09 Byadmin Views4474
    read more
  3. Table Drop, truncate 시 시간이 너무 오래 걸립니다.

    Date2022.08.29 Bysteve Views760
    Read More
  4. 큐브리드 매니저 접속 오류 문의

    Date2022.08.29 By골로가는청춘 Views130
    Read More
  5. 큐브리드 매니저 클라이언트 연결 오류 문의

    Date2022.08.29 Bydus1302 Views237
    Read More
  6. cubrid_statdump 파일 생성 경로 설정

    Date2022.08.26 Bypersepo0225 Views104
    Read More
  7. CUBRID HA 구성 to-be-active에서 active전환 실패

    Date2022.08.25 Byhsjang Views135
    Read More
  8. 함수 값은 null 체크가 안되나요??

    Date2022.08.22 Byozro Views60
    Read More
  9. CUBRID-11.2.0 에서 CUBRID-11.2.1 patch 를 진행하며 ...

    Date2022.08.21 By리들러 Views164
    Read More
  10. 조건절서브쿼리오류

    Date2022.08.12 Byozro Views141
    Read More
  11. 쿼리 오류 (컬럼 조회 순서에 따라 오류)

    Date2022.08.11 Byozro Views204
    Read More
  12. 11.2 path 방법 문의

    Date2022.08.09 By리들러 Views100
    Read More
  13. 다른 사용자에 생성된 함수 조회

    Date2022.08.05 Byozro Views97
    Read More
  14. 사용자 권한 부여

    Date2022.08.04 Byozro Views184
    Read More
  15. 리눅스 ODBC 문의

    Date2022.08.04 By내일은없다 Views69
    Read More
  16. 큐브리드 마이그레이션 툴 이용중 계속 문제가 발생합니다

    Date2022.08.04 Bywjdrmstn Views276
    Read More
  17. CUBRID 11.2 쿼리 성능 이슈

    Date2022.08.02 Bytree1891 Views531
    Read More
  18. 큐브리드 매니저 접속 문제(jdbc 드라이버)

    Date2022.08.01 Byozro Views229
    Read More
  19. [mac os] cubrid manager 오류 문의

    Date2022.08.01 By망고라떼 Views215
    Read More
  20. 스케줄러 관련 질문

    Date2022.08.01 By늅늅 Views235
    Read More
  21. JDBC Connection 끊어짐

    Date2022.07.21 Bysteve Views456
    Read More
  22. CUBRID 11.2 버전 데이터 이관 문의

    Date2022.07.19 By리들러 Views119
    Read More
Board Pagination Prev 1 ... 12 13 14 15 16 17 18 19 20 21 ... 200 Next
/ 200

Contact Cubrid

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