У меня есть таблица, куда данные должны быть вставлены следующим образом:
SEQ NAME RUN_SL DOC_SL DATE
1 UNIX 1 1 26/10/2019
2 UNIX 1 2 26/10/2019
3 UNIX 1 3 26/10/2019
4 ABCOP 2 1 26/10/2019
5 ABCOP 2 2 26/10/2019
6 TESLA 1 1 27/10/2019
7 LETHA 1 2 27/10/2019
8 TESLA 2 1 27/10/2019
9 NEWBE 2 2 27/10/2019
Данные должны быть вставлены день ото дня. Пользователь может вставить несколько строк одновременно. В этом случае RUN_SL будет таким же, но DOC_SL будет увеличен. Чтобы достичь этого, я всегда должен был выглядеть так:
SELECT NVL(MAX(A.RUN_SL), 0) + 1, NVL(MAX(A.DOC_SL), 0) + 1
INTO V_RUN_SL, V_DOC_SL
FROM TEST_TBL A
WHERE A.DATE = SYSDATE;
Затем нужно было вставить данные с помощью цикла:
FOR DATA_LIST..COUNT:
INSERT INTO TEST_TBL
VALUES(
TBL_SEQ.NEXTVAL,
DATA_LIST(i).NAME,
V_RUN_SL,
V_DOC_SL,
SYSDATE
);
Я знаю, что будут проблемы с параллелизмом, связанные сNVL (MAX (Column_Name), 0) + 1. Чтобы добиться правильной вставки, как с ней справиться, а также искать альтернативные предложения для оптимизации запросов? Заранее спасибо.