MiPlatform, FSP, Procedures example
MiPlatform, FSP 서버를 연동할 때 FSP서버에 등록된 Stored Procedure를 MiPlatform 클라이언트에서 호출하는 예
테스트환경: MiPlatform 3.2, FSP, DB2 9.7, Toad for DB2 4.7, db2jcc.jar, Eclipse 3.5
1. Toad for DB2 9.7 을 이용하여 연결된 데이터베이스에 Stored Procedure를 아래처럼 생성한다.
- MSG라는 파라미터를 MiPlatform 클라이언트로부터 받아서 실행됨
SET SCHEMA = 'COST01';
SET CURRENT PATH = "SYSIBM","SYSFUN","SYSPROC","SYSIBMADM","COST01";
CREATE PROCEDURE "COST01"."SP_INSERT_PMSG" ( IN "MSG" VARCHAR(100) )
SPECIFIC "SQL110224185536000"
LANGUAGE SQL
NOT DETERMINISTIC
EXTERNAL ACTION
MODIFIES SQL DATA
OLD SAVEPOINT LEVEL
BEGIN
INSERT INTO DEBUGTXT VALUES(MSG);
COMMIT;
END;
SET SCHEMA = 'SYSIBM';
GRANT EXECUTE ON PROCEDURE "COST01"."SP_INSERT_PMSG"( VARCHAR(100) ) TO USER "COST01" WITH GRANT OPTION;
SET SCHEMA = 'COST01';
2. FSP 서버의 콘솔에서 데이터베이스에 연결하여 위에서 작성한 프로시저를 확인한다.
3. FSP 서버 콘솔에서 프로시저를 적당한 그룹에 포함하고 클라이언트에서 호출할 이름을 설정하여 저장한다.
- 프로시저를 호출하는 문장은 다음과 같고 아래의 문장의 이름을 SP_INSERT_PMSG 라고 설정하기로 한다.
- 호출하는 문장: SP_INSERT_PMSG(#MSG#)
- 예상처리 건수: 0 // 위의 문장 실행후 리턴될 값, 0은 0이상의 갯수를 의미함)
- 기본 입력명: MSG // 클라이언트에서 전달되는 파라미터 이름
- DB2에서 실행해본 결과 프로시저는 정상적으로 실행되고 데이터베이스에 원하는 값도 제대로 저장되기는 하지만
실행 후에 리턴된 값이 -1인 관계로 MiPlatform클라이언트측에서 오류 메시지가 출력되었다. 그러므로 예상처리 건수를 -1 으로 입력하면 문제가 없지만 0미만의 값을 설정할 수가 없으므로 XML파일에서 수동으로 -1입력해주어야 했다.
자세한 것은 아래 파일내용(SP_INSERT_PMSG.xml) 참조
<query>
<type>sp_execute</type>
<description><![CDATA[]]></description>
<reload>true</reload>
<monitoring>true</monitoring>
<result-count>-1</result-count>
<statement>
<![CDATA[
SP_INSERT_PMSG(#MSG#) ]]></statement>
<input default-name="MSG">
<col name="MSG" size="255" type="VARCHAR" description="" />
</input>
<output default-name="_none">
</output>
</query>
4. FSP 서버 콘솔에서 이름이 설정된 프로시저를 테스트한다. 이 때 테스트용으로 파라미터를 설정한다.
5. FSP 서버 콘솔에서 입력파라미터가 설정된 프로시저를 실행한다.
- 테스트할 때 반드시 [Dataset으로 입력하여 테스트] 아이콘을 클릭해야 한다.
6. 테스트 실행해본 결과를 실제 데이터베이스에서 확인해 보면 정상적으로 데이터가 반영된 것으로 확인된다.
7. MiPlatform 클라이언트 측에서 FSP 서버측에 등록된 프로시저를 호출하는 코드
{
fsp_init();
fsp_clear();
fsp_addSingle("temp/cwkim/sp:SP_INSERT_PMSG"); // temp/cwkim/sp --> 트리구조로 된 그룹의 이름
fsp_callService(
""
, ""
, ""
, ""
, "MSG='MiPlatform에서_전달된_내용'" // 서버로 전달되는 파라미터, 홑 따옴표도 잊지 마세요~
, "fn_AfterSearch"
, true);
}