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
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