ソース掲示板




すべてから検索

キーワード   条件 表示 現行ログ 過去ログ トピックス 名前 本文

  メンテナンス 前画面に戻る

対象スレッド 件名: 完成
名前: lightbox
処理選択
パスワード

件名 完成
名前 lightbox
コメント
@DIV
PROCEDURE 取引データ作成
(
	PM_NUMBER IN NUMBER
)

/**********************************************************/
/* 変数の定義 */
/**********************************************************/
AS
	RET_VALUE	VARCHAR2(2000);
	WK_VALUE	VARCHAR2(2000);
	TARGET_ROW NUMBER;
	TARGET_DATE DATE;
	TARGET_CODE1 VARCHAR2(4);
	TARGET_CODE2 VARCHAR2(4);
	TARGET_SU NUMBER;
	TARGET_TANKA NUMBER;

/**********************************************************/
/* 処理開始 */
/**********************************************************/
BEGIN
	DBMS_OUTPUT.PUT_LINE('デバッグ:開始');

	/************************************************/
	/* 社員マスタと同一フォーマットの */
	/* 社員テーブルをクリア */
	/************************************************/
	WK_VALUE := 'TRUNCATE TABLE "取引データ"';
	EXECUTE IMMEDIATE WK_VALUE;

	/************************************************/
	/* ループを引数の回数ぶん実行する */
	/************************************************/
	FOR i IN 1..PM_NUMBER LOOP
		TARGET_ROW := TRUNC(DBMS_RANDOM.VALUE(1,5));

		TARGET_DATE := TO_DATE('2008/04/01');
		TARGET_DATE := ADD_MONTHS( TARGET_DATE, TRUNC(DBMS_RANDOM.VALUE(0,3)) );
		TARGET_DATE := TARGET_DATE + DBMS_RANDOM.VALUE(0,30);
		TARGET_DATE := TRUNC(TARGET_DATE);

		TARGET_CODE1 := LTRIM(TO_CHAR( TRUNC(DBMS_RANDOM.VALUE(1,51)), '0000' ));

		FOR j IN 1..TARGET_ROW LOOP

			TARGET_CODE2 := LTRIM(TO_CHAR( TRUNC(DBMS_RANDOM.VALUE(1,101)), '0000' ));
			TARGET_SU := TRUNC(DBMS_RANDOM.VALUE(1,21));

			SELECT
				販売単価
			INTO
				TARGET_TANKA
			FROM 商品マスタ
			WHERE
				商品コード = TARGET_CODE2;

			INSERT INTO "取引データ"
				(
					"取引区分"
					,"伝票番号"
					,"行"
					,取引日付
					,取引先コード
					,商品コード
					,数量
					,単価
					,金額
				)
			VALUES (
				'10'
				,i
				,j
				,TARGET_DATE
				,TARGET_CODE1
				,TARGET_CODE2
				,TARGET_SU
				,TARGET_TANKA
				,TARGET_SU * TARGET_TANKA
			);
		END LOOP;
	END LOOP;

/**********************************************************/
/* 一番外側のブロックの例外処理 */
/**********************************************************/
EXCEPTION
	WHEN OTHERS THEN
		DBMS_OUTPUT.PUT_LINE('例外発生:'||SQLCODE||':'||SQLERRM);
END;
@END