So verwenden Sie Cursor zum Extrahieren von Daten aus mehreren Tabellen
P粉141035089
2023-08-16 13:12:27
<p>Ich habe eine Abfrage, die mehrere Tabellen zurückgibt, etwa so: </p>
<pre class="brush:php;toolbar:false;">SELECT TableName, DatabaseName +'.'+ TableName, ColumnName
VON DBC.Columns
WHERE ColumnName = 'id'</pre>
<p>Ich muss diese Tabellen durchlaufen und mir die darin gespeicherten Informationen ansehen, um nur bestimmte Tabellen zu erhalten. </p>
<p>Ich habe den Code unten mit „LOOP“ und einem Cursor ausprobiert, aber er sagt <code>Ungültige Abfrage</code> (Code kommt von hier): </p>
<pre class="brush:php;toolbar:false;">DECLARE Cursor_Tables CURSOR FOR
SELECT Datenbankname ||. '.'
VON DBC.Columns
WHERE ColumnName ='id';
OPEN Cursor_Tables;
Etikett1:
SCHLEIFE
FETCH Cursor_Tables in tbName;
WENN (SQLSTATE ='02000') DANN
LEAVE label1;
ENDE WENN;
FALL, WENN (
ZÄHLER AUSWÄHLEN(*)
VON prd3_db_tmd.K_PTY_NK01
WHERE id = 0 ) >
DANN tbName
ENDE
END LOOP label1;
CLOSE Cursor_Tables;
ENDE;</pre>
<p>Wie soll ich dieses Problem lösen? Muss ich zusätzliche gespeicherte Prozeduren verwenden? Das DBMS ist Teradata. </p>
如果这是SQL Server,您可以查看以下SQL游标,我编辑了游标声明和其中的代码 虽然它们可能与您的要求不同,但我认为您可以轻松修改
您需要一个存储过程,因为这是在Teradata中唯一可以使用游标的地方。