2008年9月10日水曜日

java call pl/sql

1.procedure 呼出す
/**
* 「内部管理番号取得部品」の呼出。
*
* @param connection DBコネクション
* @param keiyakusho_syurui_cd 契約書種類コード
* @return String 内部管理番号
* @throws SQLException データベースアクセスエラー
* @throws Exception
*/
public String getNaibuKanriBango(Connection connection, String kaishaCd, String subSysId, String gyoumuSaibanCd, String updateUserId)
throws SQLException {

String s1 = "";
String s2 = "";
String s3 = "";

String sql = "call ZCMGETNAIBUKANRINO_PRC(?,?,?,?,?,?,?,?,?,?,?)";
CallableStatement cstmt = connection.prepareCall(sql);

cstmt.setString(1, kaishaCd);
cstmt.setString(2, subSysId);
cstmt.setString(3, gyoumuSaibanCd);
cstmt.setString(4, DateUtil.getDateStr());
cstmt.setString(5, null);
cstmt.setInt(6, 1);
cstmt.setString(7, updateUserId);
cstmt.setString(8, DateUtil.getTimeToNum());
cstmt.setString(9, s1);
cstmt.setString(10, s2);
cstmt.setString(11, s3);

cstmt.registerOutParameter(9, java.sql.Types.VARCHAR);
cstmt.registerOutParameter(10, java.sql.Types.VARCHAR);
cstmt.registerOutParameter(11, java.sql.Types.VARCHAR);
cstmt.executeUpdate();

s1 = cstmt.getString(9);
s2 = cstmt.getString(10);
s3 = cstmt.getString(11);

// Exception
if (!StringUtils.isBlank(s2)) {
throw new SQLException();
}
return s1;
}

CREATE OR REPLACE procedure PROACTIVE.ZCMGETNAIBUKANRINO_PRC
(pi_kaisha_cd in varchar2
,pi_subsystem_id in varchar2
,pi_gym_saiban_cd in varchar2
,pi_saiban_dt in number
,pi_bmn_naibu_no in varchar2
,pi_lock_ctl_flg in number
,pi_koushin_user in varchar2
,pi_koushin_date in number
,po_saiban_no out varchar2
,po_message_id out varchar2
,po_column_id out varchar2)

2.function を呼出す
/**
* 「委託料率取得部品」の呼出。
*
* @param connection DBコネクション
* @param keiyakusho_syurui_cd 契約書種類コード
* @return String 委託料率
* @throws SQLException データベースアクセスエラー
* @throws Exception
*/
public String getItakuRyoritu(Connection connection, String keiyakushoShuruiCd)
throws SQLException {

// 委託料率
String itakuRyoritu = "";

String sql = "{? = call PKG_COMMON.F_GET_ITAKU_RYOURITU(?,?,?,?,?) }";
CallableStatement cstmt = connection.prepareCall(sql);

cstmt.setString(1, itakuRyoritu);
cstmt.setString(2, DateUtil.getDateStr());
cstmt.setString(3, keiyakushoShuruiCd);
cstmt.setString(4, null);
cstmt.setString(5, DateUtil.getDateStr());
cstmt.setString(6, "0");

cstmt.registerOutParameter(1, java.sql.Types.VARCHAR);

cstmt.executeUpdate();

itakuRyoritu = cstmt.getString(1);

return itakuRyoritu;
}

FUNCTION F_GET_ITAKU_RYOURITU(I_GET_DATE IN VARCHAR,
I_KEIYAKUSYO_SYURUI IN VARCHAR,
I_JIGYOYO_NO_SYUTOKU_YMD IN VARCHAR,
I_KHN_KIYK_TEIKETU_YMD IN VARCHAR,
I_KADOU_NISU IN VARCHAR
)