Background Image

FORUM

조회 수 1189 추천 수 0 댓글 2
?

단축키

Prev이전 문서

Next다음 문서

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

* 질문 등록 시 다음의 내용을 꼭 기입하여 주세요.
OS
Window7 32bit, Linux 64bit 등
CUBRID Ver.
[cubrid_rel] 수행 결과 9.3.9
CUBRID TOOL Ver.
[도움말]-[버전정보] 확인
응용 환경(API)
java, php, odbc 등 입력

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


-------------- 아래에 질문 사항을 기입해 주세요. ------------------------------------------------------------------------
MS-SQL에 있는 프로시져를 CUBRID로 전환하고있는데 궁금한게 생겨서 이렇게 질문을 남깁니다.


프로시져로 작성할하게 될때 해당 프로시져 자바파일에서 INSERT 구분이나 UPDATE 구분들이 제대로 동작이 안될때..


예졔

Connection conn = null;

        PreparedStatement pstmt = null;

        StringBuffer sql = new StringBuffer(512);


        try {

            Class.forName("cubrid.jdbc.driver.CUBRIDDriver");

            conn = DriverManager.getConnection("jdbc:CUBRID:localhost:30000:aaaa:::?charset=UTF-8","aaa","aaaaaa");


            sql.append("INSERT INTO AAAAAA\n");

            sql.append(" (A1, \n");

            sql.append("  A2, \n");

            sql.append("  A3, \n");

            sql.append("  A4) \n");

            sql.append("VALUES (?, \n");

            sql.append(" ?, \n");

            sql.append(" ?, \n");

            sql.append(" SYSDATETIME)ㅇㄹ");

      pstmt = conn.prepareStatement(sql.toString());

            pstmt.setString(1, bbb);

            pstmt.setString(2, ccc);

            pstmt.setString(3, ddd);

            pstmt.executeUpdate();

            pstmt.close();


           conn.commit();

            conn.close();

            

        } catch ( SQLException e ) {

            System.err.println(e.getMessage());

        } catch ( Exception e ) {

            System.err.println(e.getMessage());

        } finally {

            if ( conn != null ) conn.close();

        }


강제로 저렇게 오류를 만들어 내봤는데..


큐브리드에서는 그냥 실행이 정상적으로만 되고 실제 데이터를 확인해보면 INSERT는 안됐더라고요.. 그래서 JAVA에서 직접 실행을 하면 오류가 나서 catch 문으로 빠져서

오류를 발생이 되더라고요.. 근데 큐브리드에서 select 프로시져명();  또는 CALL 프로시져명(); 실행을 하면 오류 내용이 전혀 나타나지 않더라고요..


catch 문으로 오류가 난 부분을 보여줄수 있는 방법이 있을가여??

  • ?
    오명환 2017.09.06 16:06
    가장 간단한 방법은 해당 procedure에 string을 return해서 오류 메세지를 전달하거나, "success" 메세지를 넣는 방법입니다.
    예제)
    public static String Phone(String name, String phoneno) throws Exception{
    String sql="INSERT INTO PHONE(NAME, PHONENO)"+ "VALUES (?, ?)";
    try{
    Class.forName("cubrid.jdbc.driver.CUBRIDDriver");
    Connection conn = DriverManager.getConnection("jdbc:default:connection
    :");
    PreparedStatement pstmt = conn.prepareStatement(sql);

    pstmt.setString(1, name);
    pstmt.setString(2, phoneno);
    pstmt.setString(3, "");
    pstmt.executeUpdate();

    pstmt.close();
    conn.commit();
    conn.close();
    } catch (SQLException e) {
    System.err.println(e.getMessage());
    return e.getMessage();
    }

    return "success";
    }
    위 코드는 테이블에 필드가 2개인데, 3개의 값을 넣어서 오류를 만든 코드입니다.

    SP 등록 문장)
    create function put_phone(name varchar, phoneno varchar) return string
    as language java
    name 'PhoneNumber.Phone(java.lang.String, java.lang.String) return java.lang.String';

    call로 함수 호출시 오류)

    csql> call put_phone('xxxx', '01011111111');

    === <Result of CALL Command in Line 1> ===

    Result
    ======================
    'Missing or invalid position of the bind variable provided.'
  • ?
    오명환 2017.09.06 16:13
    cubrid는 jvm 구동시 -Djava.util.logging.conf.file = $CUBRID/java/logging.properties 옵션을 가지고 구동합니다.
    logging.properties를 참조하시면, 기본으로 java.util.logging.filehandler class를 이용해서 logging를 할 수 있게 되어 있습니다.

    java.util.logging.filehandler 또는 java.util.logging.ConsoleHandler 사용방법을 참고하셔서 SP관련 오류 정보를 출력하셔도 됩니다.

List of Articles
번호 제목 글쓴이 날짜 조회 수
공지 SQLGate for CUBRID 영구 무료 라이선스 제공 file admin 2020.04.09 4259
1336 서브쿼리시 질문드립니다. 2 dev123123 2023.02.28 146
1335 서브쿼리에서 두개 이상의 데이터를 참조하려면. 2 안지민 2009.03.03 22317
1334 서브쿼리의 max값 3 하하 2020.10.08 1168
1333 서비스 관련 2 브리즈 2011.07.28 7516
1332 서비스 트레이 작동 중지 문제 1 file 조금느린아이 2014.12.16 7151
1331 선택한 JDBC 드라이버는 CUBRID 를 지원하지 않습니다. CUBRID JDBC 드라이버를 선택하십시오. 2 file 리들러 2022.06.21 1026
1330 선택한 jdbc 드라이버는 cubrid를 지원하지 않습니다 4 augustlys 2019.04.16 763
1329 설시치 문의 드립니다. 4 file 큐브리드궁금 2023.01.18 144
1328 설정 환경 복구 방법 1 이주하 2011.03.01 8753
1327 설치 관련 문의 1 file 하바리 2020.10.12 74
1326 설치 대상 경로에 공백있으면 설치가 안됩니다. 1 푸른여행 2009.03.30 16671
1325 설치 문의 1 joke7 2014.09.18 5754
1324 설치 문의 드립니다. 1 cuins 2012.03.06 7532
1323 설치 및 삭제의 편의성 증대 요청 1 윤희서 2009.01.20 21699
1322 설치 에러 로그 확인 부탁 드립니다. 8 우페 2009.02.19 15828
1321 설치 완료후 phpcubAdmin 에서 페이지 열기가 안됩니다. 2 마루정 2010.02.12 10037
1320 설치 질문 1 midas 2011.04.30 9282
1319 설치관련 다시 질문 올립니다. 2 해바라기 2008.12.05 17856
1318 설치시 cub_cas.exe - 시작지점 없음 오류 2 file 백곰 2009.08.13 21094
1317 설치시 cubrid manager server start: fail 오류 3 럭키늘보 2010.01.24 16945
Board Pagination Prev 1 ... 128 129 130 131 132 133 134 135 136 137 ... 199 Next
/ 199

Contact Cubrid

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