설문조사
PostgreSQL/PPAS 관련 듣고 싶은 교육은


총 게시물 156건, 최근 0 건
   

[질문]안녕하세요^^ 포스트그레스 프로시저 질문입니다.

글쓴이 : 광명이 날짜 : 2014-08-29 (금) 11:00 조회 : 6263
안녕하세요 웹개발자로 일하고 있는 일반 직장인 입니다.^^

가입 한 후 첫글이 질문성 글이라 죄송합니다 ㅠ.. 급한데 도움을 얻을 수 있는곳이 마땅치않아..ㅠ 

본론으로 들어가겠습니다!

이번에 포스트그레스로 포팅을 하게 되어서 작업을 하는 도중 알 수 없는 문제점이 생겨서 이렇게

질문글을 올리게 되었습니다. 

제가 궁금한것은 다름이 아닌 프로시저에 관련한 것입니다.

우선 사용중인 프레임웤은 아이바티스를 사용하고 있습니다. 포스트그레스 버전은 9.2 버전이구요.

구글 및 여러곳을 찾아서 프로시저 구문을 등록하였습니다만, 웹에서 프로시저를 호출할때엔 오류가 나고

직접 인자에 값을 넣어서 호출을 하면 잘되고 있어요.. ㅠ 

에러 내용은 

com.ibatis.common.jdbc.exception.NestedSQLException:   
--- The error occurred in ../config/sqlmap/POSTGRESQL_SqlMap_RTMS_RECEIVE.xml.  
--- The error occurred while applying a parameter map.  
--- Check the SqlMap_RTMS_RECEIVE.retryQueueParameters.  
--- Check the statement (update procedure failed).  
--- Cause: org.postgresql.util.PSQLException: A CallableStatement function was executed and the out parameter 2 was of type java.sql.Types=12 however type java.sql.Types=-99999999 was registered.

이러한 내용입니다.

프로시저 구문은 현재 테스트 중인 구문을 올려 보겠습니다.

CREATE OR REPLACE FUNCTION proc_regretry(p_mid varchar, p_subid integer, p_rid varchar, p_rname varchar, p_rmail varchar, nCount OUT integer, errMsg OUT VARCHAR, errCode OUT VARCHAR
)AS
$BODY$
DECLARE
 
BEGIN
 
           --select count(*) into nCount from rtms_resultlog WHERE MID = p_mid AND SUBID = p_subid;
           UPDATE RTMS_RESULTLOG SET LASTFLG = 0 WHERE MID = p_mid AND SUBID = p_subid;
           if not found then
           nCount := -1;
           return;
           end if;
           --nCount := 2;
           --commit;
           EXCEPTION WHEN OTHERS THEN
           raise notice '[Exception!!!] % %', SQLERRM, SQLSTATE;
           errMsg  := SQLERRM;
           errCode := SQLSTATE;
           nCount := -10;
 
END;
$BODY$
LANGUAGE plpgsql;

위의 구문 입니다 ㅠ. 질문 게시판이 따로 없어서 이곳에 올렸습니다만.. 

혹시 조언을 주실 고수분에 계시면 문제점이 무엇인지 알려주시면 감사하겠습니다.

오늘도 좋은하루 보내세요.

감사합니다.
[이 게시물은 PostgresDBA님에 의해 2014-11-06 22:57:20 자유게시판에서 이동 됨]

처음부터 2014-12-16 (화) 23:57
"포스트그래스에서는 모두 함수와 테이블이다."
알고 있으면 되는 문제입니다.

포스트그래스에서 함수 호출은 함산 SELECT문과 같은 기본 TX발생이 가능한 COMMAND로부터 시작해야 합니다.

따라서 ibatis같은 프레임웍이든, psql이든 postgres client에서
select 함수명(함수인자); 형태로 호출하면 됩니다.

그 결과 값도 단일이면 scalr가, 복수개가 여러건이면 record 형태의 결과가 돌려집니다.
즉.
select * from 함수명(함수인자);
형태도 호출 가능합니다.
댓글주소
   

postgresdba.com