* 질문 등록 시 다음의 내용을 꼭 기입하여 주세요.
Window7 32bit, Linux 64bit 등 | |
[cubrid_rel] 수행 결과 | |
[도움말]-[버전정보] 확인 | |
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;
}
...
...
...
}
안녕하세요
같은 인자값을 반환하지 못하면 에러를 발생하므로 다음과 같이
f_get_code_name(String p_code_group, String p_code, String p_lang_code)
-> ('a', 'b', null)
마지막 값의 인자값은 null로 입력하여 받아올 수 있습니다.