Wie bekommen Sie Informationen aus mehreren Tabellen mithilfe der cursor?
Ich habe eine Frage,,, gibt mehrere Tabellen, so etwas wie:
SELECT TableName, DatabaseName +'.'+ TableName, ColumnName
FROM DBC.Columns
WHERE ColumnName = 'id'
Und ich brauche, um eine Schleife durch diese Tabellen suchen, um die gespeicherten Informationen in diesen Tabellen, um nur bestimmte Tabellen.
Habe ich versucht, etwas wie code unten, mit 'LOOP' und cursor, aber es sagt, dass Query is invalid
(code aus hier):
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;
Wie kann ich eigentlich mit diesem problem umzugehen? Brauche ich Verfahren zusätzlich? DBMS ist Teradata
Sie müssen wählen Sie in einem cursor in einer Gespeicherten Prozedur und dann dynamisches SQL verwenden für jede tablename zurückgegeben.
Ich habe versucht, deinen Tipp, aber angesichts einige Probleme
Antwort relevant ist, TSQL (SQL-Server), anstatt Teradata-SQL, aber kann Ihnen helfen.
Ich habe versucht, deinen Tipp, aber angesichts einige Probleme
Antwort relevant ist, TSQL (SQL-Server), anstatt Teradata-SQL, aber kann Ihnen helfen.
InformationsquelleAutor Rocketq | 2015-02-17
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie eine Gespeicherte Prozedur, denn dies ist der einzige Ort, wo Sie können einen cursor in Teradata.
InformationsquelleAutor dnoeth
Wenn dies von SQL Server, die Sie überprüfen können folgende SQL-cursor, ich bearbeitet die cursor-Deklaration und den code innerhalb von
Obwohl Sie unterscheiden sich von Ihrer Anforderung, glaube ich, können Sie einfach abändern,
InformationsquelleAutor Eralper
Auf SQL Server, sp_MsForEachTable undokumentierte gespeicherte Prozedur kann verwendet werden, anstelle einer loop-Struktur wie ein cursor
Bitte überprüfen Sie die folgenden SQL-Befehl
Die syntax kann schwierig sein, wenn Sie mit der sp_msforeachtable oder dokumentierte sp_msforeachdb, aber Sie finden Beispiele auf der web -
InformationsquelleAutor Eralper
Könnte man erstellen Sie eine variable, um die Anzahl der Zeilen und legen Sie es gleich an den Grafen:
Dann verwenden Sie eine if-Anweisung, um die Tabelle auszuwählen, wenn es Zeilen, die Ihren Suchkriterien entsprechen:
Auch als eine Randnotiz, ohne WÄHLEN Sie vor Ihrer CASE-Anweisung die syntax ungültig ist, möchten Sie vielleicht versuchen Sie es einfach mit hinzufügen WÄHLEN Sie in der front der FALL, wenn Sie nicht wie die Art und Weise, die oben erwähnt
InformationsquelleAutor jeffam217
Müssen Sie dynamisches SQL verwenden. Wenn Sie brauchen, um zu sehen, die info auf den Tisch, können Sie ein synonym.
Oder wenn Sie möchten, können Sie eine Ansicht erstellen.
InformationsquelleAutor Santiago P