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
    그런가요??
    어서 적용해봐야 겠내요 ^^
    감사합니다~~!!

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

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

    Date2020.04.09 Byadmin Views4476
    read more
  3. 재귀 쿼리에서 root를 판단하는 데이터가 같을 때의 재귀쿼리 방법

    Date2018.08.01 By재익신 Views774
    Read More
  4. 재귀적 조인에 대한 쿼리를 저장할 수 있나요?

    Date2009.06.23 Bysizers Views19664
    Read More
  5. 재귀절을 이용한 뷰 생성

    Date2023.08.24 Bysj.han Views107
    Read More
  6. 재문의 JDBC 를 다운받아 9.3.6.0002 로 했는데도 안되서 문의드립니다.. 빠른답변부탁드립니다

    Date2019.04.16 Byaugustlys Views156
    Read More
  7. 재설치가 안되요

    Date2012.11.28 By냐우루 Views6074
    Read More
  8. 저 혹시 개발에 있는 데이터를 운영에 바로 등록할 수 있는 방법이 없나요???

    Date2016.08.31 By처음처럼초보 Views8
    Read More
  9. 저장 프로스저에 있는 함수 상세보기 문의입니다.

    Date2023.06.12 By대출인생30년 Views82
    Read More
  10. 저장 프로시저 사용시 커넥션 관련

    Date2018.04.11 By고늬 Views394
    Read More
  11. 저장 프로시저 작성법

    Date2010.03.14 Bywebdoors Views16379
    Read More
  12. 저장 프로시저에서 JDBC 연결이 안되는 것 같습니다.

    Date2017.03.10 Byaniman10 Views9784
    Read More
  13. 저장 프로시져 질문

    Date2009.03.12 By이석희 Views16480
    Read More
  14. 저장 함수 호출 오류

    Date2021.08.12 Bykeem Views504
    Read More
  15. 저장프로시저 샘플 테스트 에러 Invalid call: it can not return ResultSet.

    Date2022.10.21 By흔색늑대 Views127
    Read More
  16. 저장프로시저 관련 문의

    Date2014.11.04 Bytoy2508 Views8201
    Read More
  17. 저장프로시저 관련 문의 사항입니다.

    Date2017.01.18 Byreassasin Views16618
    Read More
  18. 저장프로시저 실행관련 문의

    Date2023.11.08 Byf0081 Views139
    Read More
  19. 저장프로시저 함수-loadjava

    Date2010.02.23 By쪼로롱 Views15675
    Read More
  20. 저장프로시저(function) 오류 문제입니다.

    Date2010.03.29 Byyoon Views10732
    Read More
  21. 저장프로시저나 함수 질문

    Date2015.11.13 By난래리 Views5100
    Read More
  22. 저장함수 관련질문

    Date2016.09.02 Byhscho Views12939
    Read More
Board Pagination Prev 1 ... 148 149 150 151 152 153 154 155 156 157 ... 201 Next
/ 201

Contact Cubrid

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