Background Image

FORUM

조회 수 13834 추천 수 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 55
공지 SQLGate for CUBRID 영구 무료 라이선스 제공 file admin 2020.04.09 4461
1595 여러행의 로우를 하나의 로우로 나오게 할수 없나요?? 10 rikal 2016.08.26 17163
1594 group by 경우 select 배열? 1 봉보로봉봉 2016.08.27 13125
1593 query 실행 로그도 있나요? 1 봉보로봉봉 2016.08.29 14292
1592 오라클 to_date 큐브리드 변환좀 알려주세요ㅠㅠㅠㅠ 12 한상오빠 2016.08.31 15222
1591 오라클 to_date 큐브리드 변환좀 알려주세요ㅠㅠㅠㅠ 1 한상오빠 2016.08.31 9784
1590 cubrid addvoldb 문의 2 yscoma 2016.08.31 13266
1589 저 혹시 개발에 있는 데이터를 운영에 바로 등록할 수 있는 방법이 없나요??? 5 secret 처음처럼초보 2016.08.31 8
1588 함수/프로시저 설정 문제 3 동훈이 2016.09.01 13925
1587 저장함수 관련질문 2 hscho 2016.09.02 12939
1586 재구성 후 확인방법. 2 철이 2016.09.02 12413
1585 테이블 삭제가 안됩니다. 3 소금인형 2016.09.02 13908
1584 CUBRID DB 32bit에서 64bit 변경 방법 1 동훈이 2016.09.07 11143
1583 큐브리드 매니저 - 선택한 행 > INSERT 문 복사 기능 버그 제보 1 file 차오이 2016.09.07 11462
1582 erwin 호환 2 cho 2016.09.07 13357
» 큐브릐드 함수/프로시져 java class 만들기 1 태태리 2016.09.08 13834
1580 큐브리드 function 질문. 1 태태리 2016.09.08 11654
1579 clob 입력 문제요.. 1 owlowl 2016.09.20 9687
1578 group_concat 사용 방법 1 owlowl 2016.09.22 8878
1577 to_date 사용방법문제요 2 owlowl 2016.09.24 9403
1576 cubrid에서 mssql 접근 1 전투코알라 2016.09.27 8277
Board Pagination Prev 1 ... 116 117 118 119 120 121 122 123 124 125 ... 200 Next
/ 200

Contact Cubrid

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