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
3254 큐브리드 2008 설치시 윈도우 서비스에 등록되지 않습니다. 3 file 진이 2008.11.22 63170
3253 큐브리드 2008 버전이 다운로드 않됩니다. 1 김대진 2010.01.11 9365
3252 큐브리드 2008 patch2 깔고 2 겸손한플머 2012.01.24 8945
3251 큐브리드 2008 R1.3 버전 설치 질문 3 김우람 2009.02.25 13608
3250 큐브리드 2.2로 업그레이드시 single_byte_compare문제 18 지니보이 2010.06.10 10592
3249 큐브리드 2.0설치 XE 한글데이터값이 이상 3 나루토 2009.09.10 9153
3248 큐브리드 11에서 Optane dc persistent memory app direct mode로 지원되나요? 1 몰라알수가없어 2021.02.08 116
3247 큐브리드 10점대로 구축된 사이트가 있나요? 2 잉여개발자 2018.03.26 258
3246 큐브리드 10.2 오프라인에서 볼수있는 매뉴얼 없나요? 아주 예전에 다운받은거 같은데 안보여서요 6 덴드로비움 2020.08.10 138
3245 큐브리드 10.2 버전이 설치가 되지 않습니다. 1 file 종이 2019.12.24 215
3244 큐브리드 10.2 버전 설치 후 매니저 연결 오류 문의드립니다. 2 file 오팔 2020.09.07 191
3243 큐브리드 10.1.0 PHP driver 확인 1 뿡뿌이다네 2017.11.13 197
3242 큐브리드 10 버전 리스트 분할 문의 종이 2017.01.25 12979
3241 큐브리드 1.4 사용중입니다. 2 오명일 2015.08.04 3953
3240 큐브리드 1.4 2.2 ver 사용중 입니다. 1 오명일 2015.06.26 4497
3239 큐브리드 / bin 폴더에 dmp 파일이 많이 생성됩니다 7 secret 종이 2014.03.28 20
3238 큐브리드 -75에러 확인 좀 부탁드려요 1 봉보로봉봉 2016.05.09 8262
3237 큐브리드 (java - 전자정부프레임워크 - 마이바티스) 연동 에러 1 file 백수인 2022.04.15 391
3236 큐브리드 createStatement 질문드려요 2 차솨 2022.10.19 85
3235 큐브리더 관련 문의 드려요^^ 1 secret 김트리 2009.07.17 12
Board Pagination Prev 1 ... 33 34 35 36 37 38 39 40 41 42 ... 200 Next
/ 200

Contact Cubrid

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