Background Image

FORUM

2009.03.12 02:14

저장 프로시져 질문

조회 수 16480 추천 수 0 댓글 3
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄 첨부
아래의 질문에 이어 하나더 올립니다.

저장 프로시져에서 ResultSet으로 결과를 받는 과정에서의 질문입니다.
이 내용이전에 int, String 으로 결과를 받는 프로시져들은 모두 잘 동작을 했습니다.

교재와 기술문서들을 바탕으로 아래의 코드들로 저장 프로시져들을 작성하였습니다.
그런데 동작을 하지 않아서 질문을 올립니다.
첨부 화일의 내용은 질의 편집기에서 실행한 결과/오류 메세지 입니다.(참고자료)

세부 내용을 코드와 함께 말씀드리겠습니다.

작성한 저장 프로시져는
 public static ResultSet AAA(int fff)throws Exception {
  Connection conn = null;
  Statement stmt = null;
  ResultSet rs = null;
  try {
   Class.forName("cubrid.jdbc.driver.CUBRIDDriver");
   conn = DriverManager.getConnection("jdbc:CUBRID:"+IPAddress+":33000:"+DBname+":::","","");
   String sql = null;
   sql = "SELECT c, d, e FROM bbb ";
   stmt = conn.createStatement();
   rs = stmt.executeQuery(sql);
   ((CUBRIDResultSet)rs).setReturnable();
   return rs;
  } catch ( SQLException e ) {
   System.err.println(e.getMessage());
  } catch ( Exception e ) {
   System.err.println(e.getMessage());
  } finally {
   if (rs != null) rs.close();
   if (stmt != null) stmt.close();
   if (conn != null) conn.close();
  }
  return null;
 }
위의 방식으로 bbb 테이블의 c, d,e 의 내용을 가져오는 간단한 쿼리 문입니다.
컴파일하여 java 폴더에 이동후
아래처럼 CUBRID에 저장 프로시져로 등록했습니다.

create function AAA(fff int) return cursor
as language java
name GGG.AAA(int) return java.sql.ResultSet'

그리고 위의 GGG.AAA가 올바르게 동작하는지 확인하기 위하여
질의 편집기에서
call AAA(12)
로  실행을 해보았습니다.
결과는 첨부한 내용의 오류가 발생하였습니다. (참고자료)

일단 위 내용을 그대로 자바에서 가져와 보기 위하여
 public static void HHH() throws Exception {
  Connection conn = null;
  try{
   Class.forName("cubrid.jdbc.driver.CUBRIDDriver");
   conn = DriverManager.getConnection("jdbc:CUBRID:"+IPAddress+":33000:"+DBname+":::","","");
   CallableStatement cstmt = conn.prepareCall("?=CALL AAA(12)"); 
   cstmt.registerOutParameter(1, Types.JAVA_OBJECT); 
   cstmt.execute();
   ResultSet rs = (ResultSet) cstmt.getObject(1);
   while(rs.next()) {
    System.out.println("");
    System.out.println("c ==> " + rs.getInt("c"));
    System.out.println("d==> " + rs.getString("d"));
    System.out.println("e ==> " + rs.getInt("e"));
   }
   rs.close();
   cstmt.close();
  } catch (Exception e) {
   e.printStackTrace();
   System.err.println("SQLException:"+e.getMessage());
  } finally {
   if ( conn != null ) conn.close();
  }
 }
를 만들어서 실행해 보았습니다.
발생된 에러 내용은
cubrid.jdbc.driver.CUBRIDException: Stored procedure execute error: java.lang.NoSuchMethodException:
GGG.AAA(int)
 at cubrid.jdbc.driver.CUBRIDStatement.checkExecuteError(CUBRIDStatement.java:1020)
 at cubrid.jdbc.driver.CUBRIDStatement.executeCoreInternal(CUBRIDStatement.java:890)
 at cubrid.jdbc.driver.CUBRIDStatement.executeCore(CUBRIDStatement.java:849)
 at cubrid.jdbc.driver.CUBRIDPreparedStatement.execute(CUBRIDPreparedStatement.java:507)
 at makeFunction.CheckResultSet(makeFunction.java:47)
 at makeFunction.main(makeFunction.java:20)
SQLException:Stored procedure execute error: java.lang.NoSuchMethodException:
GGG.AAA(int)
이러한 내용이였습니다.

컴파일한 저장 프로시져 AAA 에서 
 ((CUBRIDResultSet)rs).setReturnable();
앞부분에서 결과 값을 출력해보았습니다.
쿼리문의 결과는 정상적으로 들어 오는것을 확인했습니다.

위 내용중 제가 잘못한 부분이 무엇인지 몰라서 질문올립니다.
  • ?
    Prototype 2009.03.13 09:17
    답변을 빨리 드리지 못하여 죄송합니다.
    해당 문제는 내부적으로 재현하여 문제점을 찾아 보고 있습니다. 가능한 한 빠른 시간 안에 답변 드리도록 하겠습니다.
  • ?
    dwkang 2009.03.13 21:54
    ResultSet은 default connection을 사용했을때만 리턴할 수 있습니다.  AAA 메쏘드에서 default connection을 사용하지 않고 외부 연결을 사용하는데, 이런 경우에는 ResultSet을 리턴할 수 없습니다.
  • ?
    이석희 2009.03.14 00:08
    그런가요??
    어서 적용해봐야 겠내요 ^^
    감사합니다~~!!

List of Articles
번호 제목 글쓴이 날짜 조회 수
공지 SQLGate for CUBRID 영구 무료 라이선스 제공 file admin 2020.04.09 4441
1226 Visual Studio 2010과 Cubrid ole db provider연동 문제 7 안드레세상 2012.07.08 19806
1225 HA 하에서 DB에 해당 내용이 없는데 RO 브로커에서 select가 되는 현상 5 freemir 2012.07.04 7028
1224 DBMS -1016 오류 外 버그 제보 및 문의 6 차오이 2012.07.03 8728
1223 테이블 에서 데이터 타입인 set의 사이즈를 구하는 쿼리는 없을까요? 1 니르바나 2012.06.27 6529
1222 리눅스 환경에서 자동실행.... 1 석균 2012.06.25 9963
1221 이런 형태의 테이블에는 데이터를 어떻게 삽입합니까? 1 푸훗 2012.06.25 5827
1220 정기 교육 관련 문의 드립니다. 1 kings 2012.06.22 6205
1219 갑자기 select속도가 떨어졌는데 원인이 뭔지 모르겠어요. 1 secret 어려운큐브 2012.06.20 19
1218 service start 와 server start 시에 멈춤현상 1 큐브리두 2012.06.20 8901
1217 분할 관련 문의드립니다. 1 lazydev 2012.06.16 7388
1216 매니저 관련 문의 드립니다. 1 secret 장경수 2012.06.14 10
1215 아래에 이어서 질문 드립니다. 2 kings 2012.06.12 5910
1214 Cubrid Manager에서 데이터 가져오기 와 내보내기 3 atheist 2012.06.12 12201
1213 MS-SQL 2008 -> CUBRID로 마이그레이션 방법.. 2 kings 2012.06.12 11978
1212 내보내기할 때 옵션을 줄 수 있는 방법 없나요?? 1 secret 어려운큐브 2012.05.30 12
1211 함수 등록한 수 쿼리문에서 사용하면 에러나는데 뭐가 문제인거죠? 3 어려운큐브 2012.05.26 13889
1210 ODBC 오토커밋 off에 관련된 문의 1 세스카 2012.05.23 11255
1209 cubrid 설치후의 접속정보(유저ID/password)에 대해서 4 DiaBlue 2012.05.18 24688
1208 cubrid_prepare 오류 질문드립니다 4 엠지 2012.05.17 11086
1207 csql 질문드립니다. 1 진영민 2012.05.16 9193
Board Pagination Prev 1 ... 134 135 136 137 138 139 140 141 142 143 ... 200 Next
/ 200

Contact Cubrid

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