从多个表中提取数据的游标使用方法
P粉141035089
2023-08-16 13:12:27
<p>我有一个查询,返回多个表,类似这样:</p>
<pre class="brush:php;toolbar:false;">SELECT TableName, DatabaseName +'.'+ TableName, ColumnName
FROM DBC.Columns
WHERE ColumnName = 'id'</pre>
<p>我需要通过查看存储在这些表中的信息来循环遍历这些表,以便只获取特定的表。</p>
<p>我尝试了下面的代码,使用了'LOOP'和游标,但它显示<code>查询无效</code>(代码来自这里):</p>
<pre class="brush:php;toolbar:false;">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;</pre>
<p>我应该如何解决这个问题?我需要额外使用存储过程吗?DBMS是Teradata。</p>
如果这是SQL Server,您可以查看以下SQL游标,我编辑了游标声明和其中的代码 虽然它们可能与您的要求不同,但我认为您可以轻松修改
您需要一个存储过程,因为这是在Teradata中唯一可以使用游标的地方。