Я пытаюсь преобразовать некоторый Informix ESQL в Oracle Pro * C. В существующем коде Informix тип данных «SERIAL» использовался для указания автоматического увеличения столбцов. Согласно документации Oracle, Oracle Migration Workbench для Informix должен иметь возможность справиться с этим, и он объясняет, что он преобразует тип данных «SERIAL» в «NUMBER» с соответствующей последовательностью и триггером Oracle. Однако при попытке запустить инструмент он просто заменяет слово «SERIAL» на «ERROR (SERIAL)», поэтому я пытался вручную добавить триггер/последовательность.Informix «SERIAL» для Oracle NUMBER/Sequence/Trigger в Pro * C
Их пример здесь: http://docs.oracle.com/html/B16022_01/ch2.htm#sthref112 показывает способ, которым это можно сделать. Последовательность, как представляется, довольно прямо вперед, однако при попытке создать триггер, как так:
CREATE TRIGGER clerk.TR_SEQ_11_1
BEFORE INSERT ON clerk.JOBS FOR EACH ROW
BEGIN
SELECT clerk.SEQ_11_1.nextval INTO :new.JOB_ID FROM dual; END;
Pro * C препроцессор подхватывает «CREATE» ключевое слово здесь, и решает, что мне не разрешено использовать переменная хоста ": new.JOB_ID", поскольку переменные хоста не могут использоваться в сочетании с операторами "CREATE".
Мой вопрос в том, есть ли способ создать триггер, который связывает последовательность Oracle с конкретным столбцом, не используя переменную хоста, чтобы указать имя столбца? Документация Oracle, похоже, указывает на то, что их инструмент миграции должен справляться, а это значит, что это должно быть каким-то образом. Однако все примеры использования триггера, которые я нашел, используют переменную хоста, которая заставляет препроцессор жаловаться.
Спасибо за ваше время.
. (Примечание: Я использовал имена триггер/последовательность/столбцов из примера в документации Oracle в приведенном выше примере)
Почему вы не создаете триггер с помощью SQL-скрипта? Я не вижу необходимости делать это из программы C. –
Существующая программа ESQL написана на C, и моя задача - преобразовать этот существующий код в опцию, чтобы теперь использовать Pro * C. К сожалению, у меня нет полномочий сильно изменить то, как это работает. –