Background Image

FORUM

조회 수 13838 추천 수 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 128
공지 SQLGate for CUBRID 영구 무료 라이선스 제공 file admin 2020.04.09 4476
543 DB복구 질문드립니다. 7 hoon 2017.11.09 933
542 DB복구 질문 드립니다. 3 hoon 2017.11.07 307
541 DB복구 3 hoon 2017.11.08 1029
540 DB명_TXXXXX 임시파일이 생기는 경우는 뭐죠? 1 kimsuny 2013.11.12 10850
539 DB링크로 조회시 문자타입이 조회되지 않고 있습니다. 2 file 원샷 2024.03.06 97
538 DB링크 사용이 가능한지 문의드립니다. 1 secret 장경수 2012.08.28 5
537 DB링크 기능이 아직도 않되나요? 1 먹는용 2014.08.18 10312
536 DB링크 기능 아직도 없는지요? 1 아코 2015.06.03 4300
535 DB내보내기에서 스키마 파일 문의드립니다 3 qswaert 2017.11.08 588
534 DB가 저절로 OFF 되는 경우 4 이석희 2009.06.03 11585
533 DB_SEC_E_PERMISSIONDENIED 에러 1 후훗 2018.10.16 247
532 DB_OBJECT* 는 언제 사라지나요? 2 하나엘 2009.11.30 9338
531 DBMS 에러코드 확인하려면 어디서 확인가능한가요? 1 봉보로봉봉 2017.08.09 983
530 DBMS dead 현상 7 소라게 2010.12.09 8831
529 DBMS -1016 오류 外 버그 제보 및 문의 6 차오이 2012.07.03 8728
528 DBCP사용중 CUBRID** 계열 클래스를 사용하려면? 1 안지민 2010.01.14 10270
527 DBCP+OID관련 답변감사합니다. 2 안지민 2011.03.31 10022
526 DBCP 트랜잭션 문의 1 조영준 2013.03.12 6388
525 DBCP 부분이 잘 않되고 있습니다. 4 file 하늘꿈 2015.07.09 5685
524 DBCP 관련 문제 때문에 질문 드립니다. 1 피아오 2011.04.04 10049
Board Pagination Prev 1 ... 169 170 171 172 173 174 175 176 177 178 ... 201 Next
/ 201

Contact Cubrid

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