sql - 在 Teradata SQL 中调整游标
问题描述
我在 SQL Server 中有一个简单的光标,我想适应在 Teradata 中使用。
游标的目标是收集一系列表的名称并使用游标逻辑重命名它们。
我已经更改了大部分光标代码以在 Teradata 中使用,但我仍然无法完成此操作。
到目前为止,我有:
DECLARE varTableOldName VARCHAR(500);
DECLARE varTableNewName VARCHAR(500);
DECLARE vardbName VARCHAR(100);
DECLARE varIDCod VARCHAR(5);
DECLARE varRename VARCHAR(100);
DECLARE varCt INT DEFAULT 0;
DECLARE renameTables CURSOR FOR
SELECT
DBname
,TBname
FROM (
SELECT
DatabaseName AS DBname
,TableName AS TBname
,LastAccessTimeStamp AS LADate
,(CURRENT_DATE - CAST(LastAccessTimeStamp AS DATE)) AS NAccessDate
FROM
DBC.TablesV
WHERE
1=1
AND TableKind = 'T'
AND DatabaseName IN ('PD_BACKUP')
GROUP BY
DatabaseName
,TableName
,LastAccessTimeStamp
,LastAlterTimeStamp
) tbHig
WHERE NAccessDate IS NULL OR NAccessDate >= 180
ORDER BY DBname, TBname
FOR READ ONLY;
OPEN renameTables;
FETCH NEXT FROM renameTables
INTO vardbName, varTableOldName;
WHILE (SQLCODE = 0)
DO
SET varTableNewName = vardbName || '_V' || CAST(EXTRACT(YEAR FROM CURRENT_TIMESTAMP) AS VARCHAR(20)) || '_' || CAST(varCt AS VARCHAR(20));
SET varTableOldName = vardbName || '.' || varTableOldName;
SET varRename = 'RENAME TABLE ' || varTableOldName || ' TO ' || varTableNewName;
EXECUTE IMMEDIATE varRename;
SET varCt = varCt + 1;
FETCH NEXT FROM renameTables INTO vardbName, varTableOldName;
END WHILE;
CLOSE renameTables;
我认为问题在于一些语法细节或其他东西。
有人可以指导我吗?
解决方案
推荐阅读
- json - 如何配置 Circe 以停止使用嵌套类名作为编码 JSON 中的键名?
- wpf - f# xaml "this.factory" 不包含 CommandSync
- c# - Linq to SQL 工具 - 如何将它与 ASP .NET CORE 2.1 项目一起使用?
- .htaccess - .htaccess 301 将旧 url 重定向到带有查询字符串问题的新 url
- jdbc - Cassandra JDBC驱动不支持float to double
- mysql - SQL - 从 3 个表中检索结果并按日期排序
- node.js - 如何使用 node.js 执行脚本 shell
- json - 在同一屏幕上加载许多 json,如何等待一个并继续?
- webpack - 带有 Less 和 MiniCssExtractPlugin 的 Webpack 4 使用条目
- python - 考勤csv文件上传django多个员工