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

水曜日, 6月 25, 2008

開発工程の略語(主にウォーターフォール型)

# 上工程(設計工程)

* 設計工程概要
* 基本設計(BD)BasicDesign
* 機能設計(FD)FunctionDesign
* 詳細設計(DD/PD)
* 製造設計(CD)

# 下工程(試験工程)

* 試験工程概要
* 単体試験(関数内試験) UT
* 単体試験(関数間) UT
* 機能試験(FT)
* 結合試験(IT)→CT コンビネーションテスト
* 試験工程補足

火曜日, 6月 10, 2008

JAVAScript 日付フォーマット(YYYYMMDD -> YYYY/MM/DD)

// 日付フォーマット
onblur="FormatDateYYYYMMDD(this, this.value, 8)"
で呼び出すと、YYYYMMDD -> YYYY/MM/DD となる

function FormatDateYYYYMMDD(obj, val, len){

str_val = val;

// ********** 半角数値チェック ********** //

checkFlg = 0;
arrNumber = new Array("1","2","3","4","5","6","7","8","9","0","/");

for(i = 0; i < str_val.length; i++) {

c_val = str_val.substring(i, i + 1);

for(j = 0; j < arrNumber.length; j++){

c_num = arrNumber[j];

if (c_val == c_num) {

checkFlg++;

}

}


}

if (str_val.length != checkFlg) {

obj.value = val;
return;

}

// ********** 半角数値チェック ********** //

// ********** 文字列から[/]を除去する ********** //

ret_val = '';

for(i = 0; i < val.length; i++){

c_val = val.substring(i, i + 1);

if (c_val == '/') {

c_dumy = '';

} else {

c_dumy = c_val;

}

ret_val = ret_val + c_dumy;

}

str_val = ret_val;

// ********** 文字列から[/]を除去する ********** //

// ********** 文字列長チェック ********** //

if (str_val.length != len) {

obj.value = val;
return;

}

// ********** 文字列長チェック ********** //

// ********** 日付チェック ********** //

n_y = str_val.substring(0,4);
n_m = str_val.substring(4,6);
n_d = str_val.substring(6,8);

monthEndDay = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);

cal = new Date;

n_day = 0;

// 月チェック
if ((n_m < 1) || (12 < n_m)) {

obj.value = val;
return;

}

// うるう年計算
cal.setYear(n_y);
cal.setMonth(n_m - 1);
n_day = monthEndDay[n_m - 1];

if ((n_m == 2)&&(((n_y%4 == 0)&&(n_y%100 != 0))||(n_y%400 == 0))){

n_day = 29;

}

if ((n_d < 0) || (n_day < n_d)) {

obj.value = val;
return;

}

// ********** 日付チェック ********** //

// ********** フォーマット文字列返還 ********** //

obj.value = n_y + "/" + n_m + "/" + n_d;

// ********** フォーマット文字列返還 ********** //
}

BETWEEN句の使い方について

例えば適用開始日(TEKIYO_FROM)と、適用終了日(TEKIYO_TO)を項目として持つレコードで日付を指定してピンポイントで検索したい場合、以下の文で検索可能。

? BETWEEN TEKIYO_FROM AND TEKIYO_TO

TEKIYO_FROM TEKIYO_TO
①20080101 20081231
②20090101 20091231

'20080505' BETWEEN TEKIYO_FROM AND TEKIYO_TO
で、①が抽出される

金曜日, 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));
}

JavaからPL/SQLをコールし、OUTパラメータを受け取る方法

【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 M_TAX.CRE_USER%TYPE
) IS

/* PROCEDURE 名前(引数...); */
/* FUNCTION 名前(引数...) RETURN データ型; */
BEGIN
SELECT CRE_USER INTO retVal FROM M_TAX WHERE DATA_SYU = prm1 AND TEKIYO_FROM = prm2;

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,java.sql.Types.VARCHAR);

cs.executeUpdate();

System.out.println("OUT_PARAM:" + cs.getString(3));