【发布时间】:2019-01-14 18:05:22
【问题描述】:
我有一个在过程中创建的易失性表(例如,vtTempTableForPI)。一旦创建了易失性表,我将在其中插入行。
一旦我在 volatile 表中有记录,我需要从这个 volatile 表 (vtTempTableForPI) 中取出 MAX(ModifiedDatetime) 到一个局部变量中。但是,我找不到这样做的方法。
这是我的过程中针对某些上下文的一段代码:
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;
我不能在 volatile 表上使用这个游标,因为当我们编译过程时它的定义不会出现在 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.
需要帮助!
【问题讨论】:
-
您能否显示您尝试使用第一个选择时收到的错误消息?
-
我收到以下错误:
SPL1027:E(L457), Missing/Invalid SQL statement'E(3807):Object 'vtTempTableForPI' does not exist.'.虽然我确实有一段代码可以在程序运行之前检查 volatile 表是否存在,但它会被删除,我认为这并不重要这里。谢谢。 -
大家好,仍然无法找到解决此问题的方法。任何帮助将不胜感激。