cursor - Teradata 中易失性表的光标
问题描述
我有一个vtTempTableForPI
在过程中创建的易失性表(例如 )。一旦创建了易失性表,我将在其中插入行。一旦我在易失性表中有记录,我需要MAX(ModifiedDatetime)
从这个易失性表 ( 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;
我不能在 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.
需要帮忙!
解决方案
您的 Teradata 版本是什么?这对我来说很好用:
REPLACE PROCEDURE SP_test(
IN v_CALC_BASIS VARCHAR(100))
BEGIN
DECLARE lvMaxUpdateDateTime INT;
DECLARE v_LogStmt VARCHAR(5000);
SELECT Max(ModifiedDatetime)
FROM vtTempTableForPI
INTO lvMaxUpdateDateTime
WHERE Template = 'Schedule_Stream'
;
END;
CALL SP_test ('bla');
CALL Failed. [3807] SP_TEST:Object 'vtTempTableForPI' does not exist.
要么在编译之前创建易失性表,要么直接切换到全局临时表(推荐)。
推荐阅读
- laravel - 我应该将文档文件存储在 Web 服务器还是 API 服务器上?
- c - 将自定义长度的 0 位与 uint8_t 数组连接起来
- python - 为什么只有在我加载我的 keras 模型而不是在我第一次拟合它时才会收到“ValueError:检查输入时出错:...”?
- angular - HTTP 响应作为 Angular 7 中的错误被接收
- ionic-framework - 如何正确使用 Ionic 相机预览插件
- android - 实施项目的意义(':urbanairship-fcm')
- python - 存储类型数据的最佳方式
- swift - 延期给出我的多个答案
- python - Kivy 无法更新操作按钮图标
- java - 如何要求多部分文件的虚假列表?