Проблема запуска запросов вставки с переменными переменных - PullRequest
0 голосов
/ 22 сентября 2008

Я использую 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. Тот же не результат)

1 Ответ

0 голосов
/ 22 сентября 2008

В вашей инструкции вставки у вас есть 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));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...