Проблемы с выполнением запросов на вставку с переменными varray.

StackOverflow https://stackoverflow.com/questions/116938

  •  02-07-2019
  •  | 
  •  

Вопрос

Я использую SQL*Plus 9.2 на предприятии Oracle 10g.Я создал несколько сценариев, которые выполняют базовые вставки, используя параметры, которые я передаю через командную строку.Казалось логичным, что я смогу запускать несколько вставок в цикле.Итак, я попробовал следующее:

--begin

DECLARE

TYPE va_orgs IS TABLE OF nbr.lien_item.lien_item_name%type;

org va_orgs :=  va_orgs('RTA','RTB','RTE','RTI','RTM','RTT');

BEGIN

FOR i in org.FIRST .. org.LAST

LOOP

INSERT INTO nbr.lien_item (lien_item_sid, excel_row, include_in_calcs, indent, header_level, sort_order, unit, lien_item_status, lien_item_name) VALUES (nbr.lien_item_seq.nextval, 0, 'Y', 1, 0, 1, 'FTE', 'A', 'org(i)');

COMMIT;

END LOOP;

END;

/

--end

Когда я запускаю сценарий, я получаю сообщение об успешном выполнении PL/SQL.Я пробовал отлаживать и использовать dbms_output отображать значения org(i).Все выглядит нормально.Но строки никогда не попадают в базу данных.Как только я делаю выбор, новых строк нет.Есть ли какой-нибудь трюк с циклами и вставками?

(я тоже пробовал IS VARRAY(6) OF на месте IS TABLE OF.Тот же безрезультат)

Это было полезно?

Решение

В операторе вставки у вас есть org(i) в одинарных кавычках.У вас этого не должно быть, вы, вероятно, вставляете слова org(i) в качестве значений в таблицу.Итак, ваш оператор вставки должен быть

INSERT INTO nbr.lien_item (lien_item_sid, excel_row, include_in_calcs, indent, header_level, sort_order, unit, lien_item_status, lien_item_name) VALUES (nbr.lien_item_seq.nextval, 0, 'Y', 1, 0, 1, 'FTE', 'A', org(i));
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top