【发布时间】:2015-04-17 23:01:17
【问题描述】:
我有一个查询,它返回多个表,类似这样:
SELECT TableName, DatabaseName +'.'+ TableName, ColumnName
FROM DBC.Columns
WHERE ColumnName = 'id'
我需要通过查看存储在这些表中的信息来遍历这些表,以便仅获取特定的表。
我尝试了类似下面的代码,使用'LOOP'和光标,但它说Query is invalid(代码取自here):
DECLARE cursor_Tables CURSOR FOR
SELECT DatabaseName || '.' || TableName
FROM DBC.Columns
WHERE ColumnName ='id';
OPEN cursor_Tables;
label1:
LOOP
FETCH cursor_Tables into tbName;
IF (SQLSTATE ='02000') THEN
LEAVE label1;
END IF;
CASE WHEN (
SELECT COUNT(*)
FROM prd3_db_tmd.K_PTY_NK01
WHERE id = 0 ) > 0
THEN tbName
END
END LOOP label1;
CLOSE cursor_Tables;
END;
我该如何处理这个问题?我还需要使用程序吗? DBMS 就是 Teradata
【问题讨论】:
-
您需要在存储过程中的游标中进行选择,然后对返回的每个表名使用动态 SQL。
-
@dnoeth 我尝试使用您的提示,但遇到了一些问题
-
This answer 与 TSQL (SQL Server) 而不是 Teradata SQL 相关,但可能会对您有所帮助。