コメント |
@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
|