Есть ли способ в Oracle 11g для хранения временных значений в таблице? - PullRequest
0 голосов
/ 14 декабря 2018

У меня есть переменная ввода-вывода (IO) табличного типа в Oracle (с 5 столбцами), я читаю значения из нее в цикле и также выполняю проверки, если есть проверка, я помещаю сообщение об ошибке в пятый столбец,если пятый столбец пуст, я вставляю значения в таблицу.У меня есть рабочий код для этого.Но что мне нужно, так это предположить, что у меня есть 5 строк для вставки, и если для какой-либо строки запущена проверка, данные не должны быть вставлены и для других строк.Я не могу вызвать исключение, так как мне все еще нужно сообщение об ошибке для других строк.

У меня есть 2 решения для этого.Сначала .. Сначала выполните проверки (без вставки), если пятый столбец пуст, затем снова запустите цикл и вставьте в таблицу.Второе ... Вставить значения во временную таблицу, если до последней строки не было выполнено ни одной проверки, затем она будет выбрана из временной таблицы и вставлена ​​в основную таблицу.

Есть ли лучший способ справиться с этим?

1 Ответ

0 голосов
/ 14 декабря 2018

Вы можете попытаться проверить все строки перед вставкой, а затем использовать команду "INSERT SELECT", чтобы вставить все строки в таблицу с пятым столбцом, заполненным сообщением об ошибке или нет (на основе предыдущей проверки, которую вы сделали).

Пример:

BEGIN
    --DO SOME VALIDATION

    INSERT INTO <TABLE_NAME>
    SELECT COLUMN1, COLUMN2, COLUMN3, COLUMN4, 'ERROR OR NOT ERROR' COLUMN5
      FROM <OTHER_TABLE>;
END;

Таким образом, вам не понадобится второй цикл, но вам нужно посмотреть, подходит ли он вашим потребностям.

...