큐브리드 함수가 받는 파라미터에 관련하여 문의드립니다.

by yodongky posted Aug 02, 2017

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

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


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


현재 오라클로 되어있는 DB를 큐브리드로 마이그레이션 후 프로그램을 돌려보고 있습니다.


그런데 select문을 통해서 조회를 한 후 화면에 뿌려줄때 에러가 발생하는데


Parameter count is invalid. expected: 3, actual: 2 라는 cubrid exception이 발생합니다.


찾아보니 사용하는 함수의 매개변수가 3개인데 파라미터로 2개만 보내서 발생하는 것 같습니다.


오라클에서는 그냥 함수를 작성할때 매개변수가 2개들어오더라도 아래와 같은식으로 처리하면 오류가 발생하지 않습니다.


create or replace FUNCTION "F_GET_CODE_NAME" (P_CODE_GROUP in varchar2, P_CODE in varchar2, P_LANG_CODE in varchar2 := null)

RETURN VARCHAR2 IS

    V_CODE_NAME  varchar2(100);

    V_LANG_CODE  CHAR(3);

BEGIN


    IF P_LANG_CODE IS NULL THEN

         SELECT LANG_CODE

           INTO V_LANG_CODE

           FROM COM_LANG

          WHERE DEFAULT_LANG_YN = 'Y';

    ELSE

      V_LANG_CODE := P_LANG_CODE;

    END IF;

...

...

...


큐브리드함수의 경우 java소스를 통해 함수를 생성했을 때 2개의 매개변수를 전달받고 한가지가 없을 때


아래와 같이 코드로 처리를 해주었는데도 저런 오류가 발생하여서 문의드립니다. 해결방법이 없는건가요??


public static String f_get_code_name(String p_code_group, String p_code, String p_lang_code) throws Exception{

String returnValue = "";

String v_lang_code = "";

if(p_lang_code == null || "".equals(p_lang_code)) {

try {

connection();

String sql = "SELECT LANG_CODE FROM COM_LANG WHERE DEFAULT_LANG_YN = 'Y'";

stmt = conn.createStatement();

rs = stmt.executeQuery(sql);

while(rs.next()) {

v_lang_code = rs.getString("LANG_CODE");

}

} catch ( Exception e ) {

         returnValue = e.toString();

        }

else {

v_lang_code = p_lang_code;

}

...

...

...

}


Articles