Dragon27 написал(а):
Есть две таблицы (на внешнем SQL-сервере). В таблице заголовков есть поле-счётчик (назовём его id), которое автоматически увеличивается при вставке новых строк. В другой таблице содержатся строки к каждому заголовку, то есть у каждой записи есть поле id, которое указывает к какому заголовку она относится.
Нужно в собственноручно созданном ФМ заполнять эти таблицы из переданной в параметрах таблицы. Вначале создать строку в таблице заголовков, а затем создать множество строк в дочерней таблице с id, равным идентификатору созданной в таблице заголовков строки.
Делаю так.
Вначале у меня отдельным exec sql/endexec создаётся запись в таблице заголовков. Затем В loop-цикле периодически запускается exec sql/endexec, который вставляет строки в дочернюю таблицу. Таким образом, каждый раз после вставки строки в дочернюю таблицу глобальная переменная @@IDENTITY (та, что содержит последний номер счётчика, который был в поле id) обнуляется. Локальная переменная не решает проблему, так как она исчезает после endexec. Хотел попробовать вытащить значение переменной в программу, но не нашёл, как это сделать. Хотел попробовать изменять значение переменной @@IDENTITY перед самым endexec, но снова не получилось.
Кто что может посоветовать? Может есть другой способ заполнения таблицы, так чтобы @@IDENTITY не обнулялась?
Может быть, как вариант, после того как вы вставили запись заголовка, сделать выборку из этой таблицы (exec sql/endexec) максимального значения id в переменную программы и дальше уже использовать.