У меня есть cursor for loop
сумма кредита и дебета моего ежедневного транзакционного счета, и я хочу показать их соответственно.
DECLARE
v_debit := 0;
v_credit := 0;
CURSOR c_acct_rec is
select bk.acctname, bk.bsb, bk.accountnr, bk.value, bk.code
from mybank_tbl bk
r_acct_rec c_acct_rec%ROWTYPE;
FOR r_acct_rec in c_acct_rec LOOP
if r_acct_rec.code = 'dr' then
v_debit := show_debit;
else
v_credit := v_credit + r_acct_rec;
end if;
DBMS_OUTPUT.PUT_LINE(v_credit || v_debit);
END LOOP;
END;
В этой части SQL-запроса из приведенного выше показаны все значения дебета и кредита.
+-----------------+
| value | code | |
+-----------------+
| | 12 | dr | |
| | 5 | dr | |
| | 7 | dr | |
| | 33 | dr | |
| | 16 | dr | |
| | 1000 | cr | |
+-----------------+
Проблема, которую я обнаружил, потому что они находятся в цикле курсора, он заполняет все значения в одном столбце, как показано ниже
+-------+--------+
| Debit | Credit |
+-------+--------+
| 12 | |
| 5 | |
| 7 | |
| 33 | |
| 16 | |
| 1000 | |
+-------+--------+
Оператор if / else не может управлять им для отображения всех записей строк.
+-------+--------+
| Debit | Credit |
+-------+--------+
| 12 | 0 |
| 5 | 0 |
| 7 | 0 |
| 33 | 0 |
| 16 | 0 |
| 1000 | 0 |
| 1000 | 1000 |
+-------+--------+
Это способ отделить ее с помощью хранимой процедуры или отделить строку от значения учетной записи (r_acct_rec.value), чтобы проверить, чтобы получить этот ожидаемый результат?
+-------+--------+
| Debit | Credit |
+-------+--------+
| 12 | |
| 5 | |
| 7 | |
| 33 | |
| 16 | |
| | 1000 |
+-------+--------+