카테고리 없음

MiPlatform, FSP, Procedures example

Soul-Learner 2011. 2. 28. 15:20

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) 참조

<?xml version="1.0" encoding="euc-kr"?>
<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 서버측에 등록된 프로시저를 호출하는 코드

function btn_call_sp_hello_OnClick(obj)
{
 fsp_init();
 fsp_clear();
 
 fsp_addSingle("temp/cwkim/sp:SP_INSERT_PMSG"); // temp/cwkim/sp --> 트리구조로 된 그룹의 이름
 fsp_callService(
        ""
        , ""
        , ""
        , ""
        , "MSG='MiPlatform에서_전달된_내용'" // 서버로 전달되는 파라미터, 홑 따옴표도 잊지 마세요~
        , "fn_AfterSearch"
        , true);
}