Background Image

FORUM

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

단축키

Prev이전 문서

Next다음 문서

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

* 질문 등록 시 다음의 내용을 꼭 기입하여 주세요.
OS
Linux 64bit 등
CUBRID Ver.
10.1
CUBRID TOOL Ver.
10.1.0.0003 
응용 환경(API)
java

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


-------------- 아래에 질문 사항을 기입해 주세요. ------------------------------------------------------------------------
프로시져를 작성하였는데 궁금한 점 2가지 문의 드립니다.


=============== 테이블 스키마 ======================

CREATE TABLE [ta_seq] (

[bplc_cd] CHARACTER VARYING (11) NOT NULL COMMENT '사업소코드',

[biz_cd] CHARACTER VARYING (2) NOT NULL COMMENT '업무코드',

[seq] INTEGER COMMENT '순번',

CONSTRAINT [ta_seq_pk] PRIMARY KEY([biz_cd], [bplc_cd]),

CONSTRAINT [ta_seq_idx] UNIQUE KEY([biz_cd], [bplc_cd])

)

COLLATE euckr_bin

COMMENT = '순번';


===================== 프로시저 코드(JAVA) ========================


import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.SQLException;


public class Sproc {

public static void getIndex(String pBplCd, String pBizCd, Integer vnCount) throws Exception

{

Connection conn = null;

PreparedStatement pstmt = null;

vnCount = 0;

String sql = "";

try {

try {

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

} catch (ClassNotFoundException e) {

System.out.println("Driver Class Not Found");

}

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

vnCount = getIndexNumber(conn, pBplCd, pBizCd);

System.out.println("프로시저 리턴 결과 vnCount : " + vnCount);

if(vnCount == null)

{

throw new Exception("getIndexNumber value is null");

}

if(vnCount == 0)

{

System.out.println("==================== 조건 1 ========================");

sql = "INSERT INTO TA_SEQ(BPLC_CD, BIZ_CD, SEQ)VALUES(?, ?, ?)";

pstmt = conn.prepareStatement(sql);

pstmt.setString(1, pBplCd);

pstmt.setString(2, pBizCd);

pstmt.setInt(3, 1);

pstmt.executeUpdate();

}

else

{

System.out.println("==================== 조건 2 ========================");

sql = "UPDATE TA_SEQ SET SEQ = ? WHERE BPLC_CD = ? AND BIZ_CD = ?";

pstmt = conn.prepareStatement(sql);

pstmt.setString(1, pBplCd);

pstmt.setString(2, pBizCd);

pstmt.setInt(3, vnCount + 1);

pstmt.executeUpdate();

}

vnCount += 1;

System.out.println("==================== 최종결과 vnCount :  ========================" + vnCount);

pstmt.close();

conn.commit();

conn.close();

}catch(SQLException e) {

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

vnCount = null;

}finally {

if(pstmt != null)try {pstmt.close();}catch(SQLException ex) {}

if(conn != null)try {conn.close();}catch(SQLException ex) {}

}

}

public static Integer getIndexNumber(Connection conn, String pBplCd, String pBizCd)

{

System.out.println("============================== 호출  시작 ============================");

System.out.println("pBplCd : " + pBplCd);

System.out.println("pBizCd : " + pBizCd);

System.out.println("============================== 호출 종료 ============================");

PreparedStatement pstmt = null;

ResultSet rs = null;

Integer vnCount = 0;

String sql = "SELECT IFNULL(SEQ, 0) FROM TA_SEQ WHERE BPLC_CD = ? AND BIZ_CD = ?";

try {

pstmt = conn.prepareStatement(sql);

pstmt.setString(1, pBplCd);

pstmt.setString(2, pBizCd);

rs = pstmt.executeQuery();

while(rs.next())

{

vnCount = rs.getInt("SEQ");

}

rs.close();

pstmt.close();

}catch(SQLException e) {

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

vnCount = null;

}finally {

if(rs != null)try {rs.close();}catch(SQLException ex) {}

if(pstmt != null)try {pstmt.close();}catch(SQLException ex) {}

}

return vnCount;

}

}


================================ 프로시저 등록 ================================

Sproc.java loadjava 를 이용하여 등록한 상태

CREATE PROCEDURE getIndex(p_bplc_cd IN varchar, p_biz_cd IN VARCHAR, p_seq OUT INTEGER) 

AS LANGUAGE JAVA NAME 'Sproc.getIndex(java.lang.String, java.lang.String, java.lang.Integer)';


============================= 호출 자바 샘플 ======================================



import java.sql.CallableStatement;

import java.sql.Connection;

import java.sql.DriverManager;


public class Test {


public static void main(String[] args) throws Exception{

String url = "jdbc:cubrid:192.168.195.100:33000:kioskdb:::?charSet=EUC-KR";

String userid = "kioskcub";

String password = "kioskcubpwd";

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

Connection conn = DriverManager.getConnection(url, userid, password);

CallableStatement ctmt;

ctmt = conn.prepareCall(" call getIndex(?, ?, ?)" ) ;

ctmt.setString(1, "MASTER");

ctmt.setString(2, "99");

ctmt.registerOutParameter(3, java.sql.Types.INTEGER);

ctmt.execute() ;

int cnt = ctmt.getInt(3);

System.out.println(cnt);

}


}


========================================== 실행결과 ============================


============================== 호출  시작 ============================

pBplCd : MASTER

pBizCd : 99

============================== 호출 종료 ============================

프로시저 리턴 결과 vnCount : 0

==================== 조건 1 ========================

==================== 최종결과 vnCount :  ========================1


제가 기대했던 결과는 TA_SEQ 테이블에 데이터가 없기 때문에 INSERT 가 되고 int cnt = ctmt.getInt(3); 가 1이 리턴되는걸 예상했는데 테이블에는 데이터가 

들어가지도 않고   int cnt = ctmt.getInt(3); 값은 계속 0 이 됩니다.

어디가 잘못되었는지 몰라서 문의 드립니다.


  • ?
    엄기호 2018.05.29 16:12
    sql_log 정보를 보시면 어떤 질의문이 에러가 났는지 알 수 있을 겁니다.
    sql_log 위치는 log/broker/sql_log에 있습니다.
    리눅스 임으로 cd명령어를 이용하여 sql_log 위치로 이동하여 파일을 열어서 확인 해보십시요..
    #>cd $CUBRID/log/broker/sql_log 엔터

List of Articles
번호 제목 글쓴이 날짜 조회 수
공지 CUBRID 사용자를 위한 DBeaver 도구 출시 안내 admin 2024.04.23 65
공지 SQLGate for CUBRID 영구 무료 라이선스 제공 file admin 2020.04.09 4465
3819 테이블스페이스 1 ozro 2022.06.22 295
3818 테이블생성 494 실행오류 문의 1 뺀돌스 2019.03.25 1276
3817 테이블별 row 개수를 조회하는 쿼리 6 cncn 2023.10.18 111
3816 테이블목록과 필드목록을 조회하는 방법 1 박경채 2016.11.21 22088
3815 테이블명을 한글로 할 수는 없나요? 3 유니콘 2010.02.22 13833
3814 테이블명 대문자 문의드립니다. 1 jechoi 2019.07.09 621
3813 테이블당 컬럼 수 조회하는 SQL문 ? 1 ohgeumjin 2020.05.27 1224
3812 테이블단위로 이관 3 secret 이호영 2016.01.29 14
3811 테이블간 relationship 구현 어떻게하나요? 1 thiago 2012.10.11 5779
3810 테이블/컬럼명 자동완성 설정문의 5 file dfdfdd 2023.02.10 205
3809 테이블 한글명, 컬럼 한글명을 입력해주는 신텍스는 없나요?? 2 덴드로비움 2017.08.16 1065
3808 테이블 필드명이 value 일경우 어떻게 처리해야하나요 1 건빵 2010.10.08 7295
3807 테이블 필드 추가 후 위치변경 하기 2 건빵 2010.11.29 10222
3806 테이블 파티션나눈후 조회시 에러가 발생합니다. 2 연습용 2021.11.25 186
3805 테이블 파티션 추가 문의 1 초보 2010.04.09 10470
3804 테이블 파티션 문의 4 초보 2010.04.09 10186
3803 테이블 파티션 관련 문의 1 전산 2013.04.30 7594
3802 테이블 파티션 -> 일반 테이블 변경 문의 4 초보 2010.04.09 10623
3801 테이블 파티셔닝은 1 홍서기 2009.03.07 15037
3800 테이블 특정문자 검색 SQL문 1 ohgeumjin 2020.06.03 245
Board Pagination Prev 1 ... 5 6 7 8 9 10 11 12 13 14 ... 200 Next
/ 200

Contact Cubrid

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