Background Image

FORUM

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

단축키

Prev이전 문서

Next다음 문서

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

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

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


-------------- 아래에 질문 사항을 기입해 주세요. ------------------------------------------------------------------------

안녕하세요..


큐브리드 function 을 만들려고하는데요.


http://www.cubrid.org/manual/91/ko/sql/jsp.html


여기나와있는데 예제는 일단 완료했습니다.


그런데 실제 소스를 반영할라다 보니... 잘 모르겠네요..


예제랑은 아예 틀린 문제인거 같아서.. 모르겠네요.... 



-----------------------------------------------------------

CREATE FUNCTION 'aaaa`() RETURNS INTEGER(11)

    READS SQL DATA

BEGIN


내용 어쩌구


END

-------------------------------------------------------------------



이것을 만들라는데요..


이걸 클래스로 어찌 만드는지....


예시좀 하나 부탁드리겠습니다..  저위에 내용으로 예시좀 부탁드릴게요...


듬성듬성 말고.. 자세히좀 부탁드립니다...





1번째 질의 실행이 실패하였습니다.

--------------------------------------------------

CREATE FUNCTION `aaaaa`() RETURNS INTEGER(11)

    READS SQL DATA

BEGIN

        DECLARE _id INTEGER;



실행 오류 : -493

Syntax: invalid create function

  CREATE FUNCTION identifier '(' {sp_param_list} ')' RETURN {data_type|CURSOR} {IS|AS} LANGUAGE JAVA NAME 'STRING' [CAS INFO-localhost:30000,1,3020],[SESSION-18],[URL-jdbc:cubrid:localhost:30000:cms:dba:********:].

  • ?
    주영진 2016.09.08 05:21
    CUBRID Store Function으로 만드시려는 Java 클래스 파일은 작성하셨다는 전제로 설명드리겠습니다.

    빨간색은 사용자가 환경에 따라 변경되는 값입니다.



    1. Java 클래스 파일을 CUBRID 데이터베이스에 Load 하셔야 합니다.

         $ loadjava demodb HelloWorld.class



    2. 데이터베이스에 CUBRID Store Function을 생성해주셔야 합니다.

         단, Java 클래스 Function은 꼭 static이어야 합니다.

         2-1. 파라미터 값이 없고, 리턴 값만 있는 경우

    csql> CREATE FUNCTION Hello() RETURN VARCHAR
             AS LANGUAGE JAVA
             NAME 'SpCubrid.HelloCubrid() return java.lang.String';

    - Hello()
         CUBRID 데이터베이스에서 사용할 Function 이름입니다.
                   Java 클래스 파일에 작성된 Function 이름과 관계없이 임의로 지정해주시면 됩니다.

              - VARCHAR
                   Java 클래스 파일에 작성된 Function의 리턴 값 타입에 대응하는 CUBRID 데이터베이스 데이터 타입입니다.
                   CUBRID 데이터 타입은 http://www.cubrid.org/manual/ko/9.3.0/sql/jsp.html 에서 '데이터 타입 매핑' 부분에 잘 나와 있습니다.
                   Function의 리턴 값이 가지는 범위에 따라 적절하게 지정해주시면 됩니다.

              - SpCubrid.HelloCubrid() return java.lang.String
                   Java 클래스 파일에 대한 정보를 적어주는 부분입니다.
                   해석하자면 SpCubrid라는 Java 클래스에서 HelloCubrid()라는 메소드를 사용하고, 리턴 값의 타입은 java.lang.String이라는 뜻입니다.
                   작성하신 Java 클래스 파일에 맞게 적어주시면 되고 ' (single quotation)으로 감싸주시면 됩니다.

              ※ CREATE FUNCTION은 CUBRID csql 접속 또는 Manager 접속을 통해서 해주셔야 합니다.

         2-2. 파라미터 값이 있고, 리턴 값도 있는 경우

              csql> CREATE FUNCTION Sp_int(i int) RETURN int
                       AS LANGUAGE JAVA
                       NAME 'SpCubrid.SpInt(int) return int';

              2-1. 과 차이점을 비교해보시면 파라미터 값이 있어서 어떻게 달라지는지 아실 수 있을 겁니다.
              int 데이터 타입의 경우에는 그냥 int 라고 써주셔도 됩니다.

         2-3. 리턴 값으로 ResultSet을 리턴하는 경우

              csql> CREATE FUNCTION rset() RETURN cursor
                       AS LANGUAGE JAVA
                       NAME 'JavaSP2.TResultSet() return java.sql.ResultSet';

              ResultSet을 리턴한다고 하더라고 리턴 값의 타입을 명시해주는 부분 외에는 큰 차이가 없습니다.



    3. CUBRID Store Function을 사용하려고 할 때 호출하는 방법입니다.

         3-1. 파라미터 값이 없고, 리턴 값이 문자열을 리턴하는 경우

              3-1-1. CALL Hello() INTO :HELLO;

                   단독으로 사용할 경우 CALL문 뒤에 리턴 값을 저장할 임의의 변수명(HELLO)을 선언해서 사용할 수 있습니다.

              3-1-2. select Hello() from game;

                   SQL Query에서 사용할 경우 Query 중간에 문자열이 들어갈 수 있는 공간에 적절하게 사용하시면 됩니다.

              ※ 숫자형 또는 다른 데이터 타입을 리턴하는 경우에도 데이터 타입이 다르다는 것 외에는 동일합니다.

         3-2. 파라미터 값이 있고, 리턴 값이 있는 경우

              파라미터 값이 없는 경우에서 사용할 Function 이름 옆에 파라미터 값을 넣어주는 것 말고는 차이점이 없습니다.

         ※ 추가적인 예시를 더 적는 것보다 http://www.cubrid.org/manual/ko/9.3.0/sql/jsp.html 에서 'Java 저장 함수/프로시저 호출' 부분에 잘 나와 있습니다.



    4. 주의사항

         CUBRID에서 Java Stored Procedure 및 Function을 사용하시려면 CUBRID 서버가 설치되는 환경에 Java Runtime Environment (JRE) 1.6 이상 버전이 설치되어 있어야 합니다.
         
         또 $CUBRID/conf/cubrid.conf 파일 시스템 변수 중에 java_stored_procedure=yes 를 추가로 적어주고, 변경된 내용을 적용하려면 CUBRID 서버를 재시작 해야 합니다.

List of Articles
번호 제목 글쓴이 날짜 조회 수
공지 CUBRID 사용자를 위한 DBeaver 도구 출시 안내 admin 2024.04.23 48
공지 SQLGate for CUBRID 영구 무료 라이선스 제공 file admin 2020.04.09 4458
534 큐브리드 메니져로 쿼리 결과 조회시 3 ApiClasser 2009.02.13 13544
533 리눅스에서 큐브리드 설치시 문제입니다 2 file 유니콘 2009.02.27 13563
532 자바프로그램 연결 에러 7 지니 2009.09.07 13567
531 큐브리드 매니저, 쿼리브라우저 차이점 문의 1 jyuvenia 2011.11.12 13568
530 ODBC, OLEDB 접속후, ADO 프로그래밍을 했을 때.. 1 lkim 2011.06.09 13577
529 큐브리드 서비스 시작시 오류메시지 해결 방법 5 종이 2011.07.05 13596
528 CUBRID 10.0에 대해서... 3 사랑천사 2016.11.17 13605
527 큐브리드 2008 R1.3 버전 설치 질문 3 김우람 2009.02.25 13608
526 procedure 문의드립니다 1 삽질쟁이 2009.07.03 13617
525 원격 호스트에 강제로 끊김 현상 2 moon 2014.08.28 13618
524 톰캣과 호스팅서버 큐브리드 연동법 질문합니다. (JDBC) 1 ditatiic 2013.05.23 13622
523 데이터베이스로드와 언로드를 이용한 데이터 입력시 1 rahmat 2009.04.02 13640
522 질의 자동화 주기 문의 드립니다. 1 이석희 2008.12.17 13651
521 Ubuntu에서 apt-get 을 통한 install 지원 3 freewind 2013.07.09 13665
520 AVG 함수관련 질문드려요 1 구름마음 2013.06.10 13678
519 grails에서 사용이 가능한 방법이 있나요? 1 nsky13 2010.03.23 13680
518 Client만 설시치 oledb provider가 설치되지 않습니다. 1 hyperhand 2009.12.19 13687
517 ++ cubrid server start: fail 2 file 토네이도 2013.09.13 13701
516 cubrid ebuild && 문제점 보고. 1 송효진 2009.04.05 13706
515 jruby에서 jdbc 사용시 driver를 찾지못합니다 1 이니야 2011.05.17 13715
Board Pagination Prev 1 ... 169 170 171 172 173 174 175 176 177 178 ... 200 Next
/ 200

Contact Cubrid

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