Mit "Cursor For" über Datenbanken, Schem. und Tab. iterieren

Mr. Robot

Fleissiger Benutzer
Beiträge
88
Hallo Zusammen,

ich möchte gerne eine Abfrage erstellen das über Datenbanken, Schemas und Tabellen iteriert. Habe erstmal eine Abfrage erstellt das über Tabellen und Schemas iteriert (siehe unten). Lässt sich dies vielleicht eleganter schreiben z.B. mit zwei Variablen in einem DECLARE Befehl? In einem zweiten Schritt möchte ich gerne über Datenbanken iterieren wodurch es recht unübersichtlich wird. Vielleicht habt Ihr Ideen wir man es besser machen könnte? Vielen Dank

DECLARE @tbl_name nvarchar(255)
DECLARE @schem_name nvarchar(255)
DECLARE @tbl_name_status int
DECLARE @schem_name_status int
DECLARE @strSQL nvarchar(max)

DECLARE tbl_cursor CURSOR FOR
SELECT [TABLE_NAME]
FROM [Datenbank1].[INFORMATION_SCHEMA].[TABLES]
WHERE [TABLE_NAME] LIKE 'Sales%'

DECLARE schem_cursor CURSOR FOR
SELECT [TABLE_SCHEMA]
FROM [Datenbank1].[INFORMATION_SCHEMA].[TABLES]
WHERE [TABLE_NAME] LIKE 'Sales%'

OPEN tbl_cursor
OPEN schem_cursor

FETCH NEXT FROM tbl_cursor INTO @tbl_name
Select @tbl_name_status = @@fetch_status

FETCH NEXT FROM schem_cursor INTO @schem_name
Select @schem_name_status = @@fetch_status

WHILE @tbl_name_status = 0
BEGIN

SET @strSQL =

'Select * FROM [Datenbank1].[' + @schem_name + '].[' + @tbl_name + ']'

WHILE @schem_name_status = 0
BEGIN
SET @strSQL =

'Select * FROM [Datenbank1].[' + @schem_name + '].[' + @tbl_name + ']'

FETCH NEXT FROM schem_cursor INTO @schem_name
Select @schem_name_status = @@fetch_status

print @strSQL

END

FETCH NEXT FROM tbl_cursor INTO @tbl_name
Select @tbl_name_status = @@fetch_status

END

CLOSE schem_cursor
CLOSE tbl_cursor
DEALLOCATE schem_cursor
DEALLOCATE tbl_cursor
 
Werbung:
Einen besseren Weg wüsste ich nicht. Du kannst
Code:
DECLARE @tbl_name nvarchar(255),@schem_name nvarchar(255)
verwenden, ändert jetzt aber nicht viel.
 
Zurück
Oben