У меня есть изменчивая таблица (скажем, vtTempTableForPI
), которую я создаю внутри процедуры. После создания изменчивой таблицы я вставляю в нее строки.
Когда у меня есть записи в таблице volatile, мне нужно взять MAX(ModifiedDatetime)
из этой таблицы volatile (vtTempTableForPI
) в локальную переменную. Однако я не могу найти способ сделать это.
Вот фрагмент кода из моей процедуры для некоторого контекста:
SELECT MAX(ModifiedDatetime)
FROM vtTempTableForPI
INTO lvMaxUpdateDateTime
WHERE Template = 'Schedule_Stream'
;
И затем я хочу использовать эту локальную переменную для вставки в другую изменчивую таблицу, как показано ниже:
SET lvQuery = '
INSERT INTO vtScheduleVersionUpdatedTime
SELECT
''Schedule_Stream''
, ''' || CAST(lvMaxUpdateDateTime AS VARCHAR(19)) || '''
';
EXECUTE IMMEDIATE lvQuery;
Я не могу использовать этот курсор на энергозависимой таблице, поскольку ее определение не будет присутствовать в DBC, когда мы скомпилируем процедуру, поэтому она выдаст ошибку. Если я пытаюсь использовать динамический запрос, чтобы избежать этой ошибки, я сталкиваюсь с другой ошибкой, как показано ниже:
SET lvMaxModifiedDateQuery = '
SELECT MAX(ModifiedDatetime)
FROM vtTempTableForPI
WHERE Template = ''Schedule_Tank''
';
PREPARE stMaxModifiedDateQuery03 FROM lvMaxModifiedDateQuery;
OPEN crGetMaxModifiedDate03;
FETCH crGetMaxModifiedDate03 INTO lvMaxUpdateDateTime;
--CLOSE crGetMaxModifiedDate;
SET lvQuery = '
INSERT INTO vtScheduleVersionUpdatedTime
SELECT
''Schedule_Tank''
, ''' || CASt(lvMaxUpdateDateTime AS VARCHAR(19)) || '''
';
EXECUTE IMMEDIATE lvQuery;
Ниже приведена ошибка, которую я получаю:
Failure occured while Creating Dynamic Query
SQL State:T7688,
SQL Code:7688,
SQL SESSION: 252898254,
Execution Start Time:2019-01-13 21:44:44,
Execution End Time:2019-01-13 21:44:54,
ERROR Message: Error occurred generating Evl code for dynamic fetch.
Нужна помощь!