仕事に関係する情報のメモ 技術、プロジェクト管理など

金曜日, 6月 06, 2008

JAVAからPL/SQLのカーソル取り出し

ポイントは
cs.registerOutParameter(3,OracleTypes.CURSOR);
oracle.jdbc.driverパッケージにあるので、クラスパスに含めること。

【PL/SQL】
CREATE OR REPLACE PACKAGE BODY ABC.PKG_CRM0700TEST
IS
-- グローバル変数宣言
/* 変数名 データ型; */
-- プロシージャ、関数宣言
PROCEDURE GETCRE_NAME(
prm1 IN M_TAX.DATA_SYU%TYPE,
prm2 IN M_TAX.TEKIYO_FROM%TYPE,
retVal OUT EmpCurType
) IS

/* PROCEDURE 名前(引数...); */
/* FUNCTION 名前(引数...) RETURN データ型; */
BEGIN
OPEN retVal FOR SELECT * FROM M_TAX;

END GETCRE_NAME;

END PKG_CRM0700TEST;
/

【JAVA】
//★★ここから下は要らないので消すこと
sql = ("{call PKG_CRM0700TEST.GETCRE_NAME(?,?,?)}");

cs = conn.prepareCall(sql);
cs.setString(1, "A"); //データ種別
cs.setString(2, "20080801"); //適用開始日
cs.registerOutParameter(3,OracleTypes.CURSOR);

cs.executeUpdate();

rs = (ResultSet) cs.getObject(3);

while(rs.next()){
System.out.println(rs.getString(1)+":"+rs.getString(2));
}

1 件のコメント:

MILK さんのコメント...

追記
参考サイトは以下
http://d.hatena.ne.jp/taedium/20070828/p1