これが私の手順です。「CUR_TO_COLLECT_DATA」という名前のカーソルを使用しました。また、「TBL_TRIAL_BALANCE_REPORT」テーブル タイプの「VAR_CUR_TO_COLLECT_DATA」という名前の変数を使用しました。
ここで、「VAR_CUR_TO_COLLECT_DATA」変数を使用したくありません。カーソルの名前、つまり「VAR_CUR_TO_COLLECT_DATA」変数の代わりに「CUR_TO_COLLECT_DATA」を使用したいと考えています。
このタスクを実行することは可能ですか? はいの場合、どのように助けてください。
PROCEDURE PR_TRIAL_BALANCEWITHOUTFOR IS
CURSOR CUR_TO_COLLECT_DATA IS(
SELECT NAME, SUM(CREDIT) AS CREDIT, SUM(DEBIT) AS DEBIT
FROM (
SELECT (SELECT GL_NAME
FROM QM_GL
WHERE QM_GL.GL_ID = QT_ACCOUNTING.GL_ID) AS NAME,
DECODE(QT_ACCOUNTING.TRANS_TYPE,
'CR',
(QT_ACCOUNTING.TRANS_AMOUNT),
0.00) AS CREDIT,
DECODE(QT_ACCOUNTING.TRANS_TYPE,
'DR',
(QT_ACCOUNTING.TRANS_AMOUNT),
0.00) AS DEBIT
FROM QT_ACCOUNTING, QM_ACCOUNTING_PERIOD
WHERE QT_ACCOUNTING.VALUE_DATE BETWEEN
QM_ACCOUNTING_PERIOD.PERIODFROM AND
QM_ACCOUNTING_PERIOD.PERIODTO
AND QM_ACCOUNTING_PERIOD.STATUS = 'O'
)
GROUP BY NAME);
VAR_CUR_TO_COLLECT_DATA TBL_TRIAL_BALANCE_REPORT%ROWTYPE;
BEGIN
OPEN CUR_TO_COLLECT_DATA;
LOOP
FETCH CUR_TO_COLLECT_DATA
INTO VAR_CUR_TO_COLLECT_DATA;
IF (VAR_CUR_TO_COLLECT_DATA.CREDIT - VAR_CUR_TO_COLLECT_DATA.DEBIT) > 0 THEN
INSERT INTO TBL_TRIAL_BALANCE_REPORT
VALUES
(VAR_CUR_TO_COLLECT_DATA.NAME,
(VAR_CUR_TO_COLLECT_DATA.CREDIT - VAR_CUR_TO_COLLECT_DATA.DEBIT),
0);
END IF;
IF (VAR_CUR_TO_COLLECT_DATA.DEBIT - VAR_CUR_TO_COLLECT_DATA.CREDIT) > 0 THEN
INSERT INTO TBL_TRIAL_BALANCE_REPORT
VALUES
(VAR_CUR_TO_COLLECT_DATA.NAME,
0,
(VAR_CUR_TO_COLLECT_DATA.DEBIT - VAR_CUR_TO_COLLECT_DATA.CREDIT));
END IF;
EXIT WHEN CUR_TO_COLLECT_DATA%NOTFOUND;
END LOOP;
CLOSE CUR_TO_COLLECT_DATA;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE(SQLERRM);
BEGIN
CLOSE CUR_TO_COLLECT_DATA;
EXCEPTION
WHEN OTHERS THEN
NULL;
END;
END;