Frage : t-sql, der durch eine Temptabelle sich schlingt

Ich habe eine Temptabelle, die Datenbanknamen enthält, die an von meinem SqlServer existieren und die varaible FO den databse Namen führen möchten, um Daten in den sysobjects und syscolumns für jede Datenbank zu holen.

Below ist ein Code des gespeicherten Verfahrens, in dem ExtractorControl eine Datenbank ist, die immer im Code ist, aber „gmc“ ist eine der Datenbanken, die in der Temptabelle existiert. Ich möchte diesen Arbeitscode ändern, damit ich durch jede Datenbank (ApplicationCode) und acumulate schlingen kann die Reihen, denen ich von jedem sysobjects und syscolumns innerhalb jedes database.
benötige
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
This ist die Temptabelle:

EINDEUTIGES ApplicationCode VON ExtractorControl. .EditChecks VORWÄHLEN

Dieses ist, wo ich den ApplicationCode Parameter spielen wünsche:

    ExtractorControl. .FilesToProcess.ApplicationCode, ExtractorControl. .FilesToProcess.RootFile, ExtractorControl. .FilesToProcess.DestinationTable, gmc. .syscolumns.name VORWÄHLEN ALS „Spalten-Name“
    IN #TableStructures
    VON (ExtractorControl. .FilesToProcess INNER ANSCHLIESSEN gmc. .sysobjects AUF ExtractorControl. .FilesToProcess.DestinationTable = gmc. .sysobjects.name)., INNEREM gmc. .syscolumns ANSCHLIESSEN AUF gmc. .sysobjects.id = gmc. .syscolumns.id
    GRUPPE DURCH ExtractorControl. .FilesToProcess.ApplicationCode, ExtractorControl. .FilesToProcess.RootFile, ExtractorControl. .FilesToProcess.DestinationTable, gmc. .syscolumns.name, gmc. .sysobjects.xtype
    HABEN (gmc. .sysobjects.xtype) = „U“

Antwort : t-sql, der durch eine Temptabelle sich schlingt

Sie müssen dynamischen sql verwenden.
checxk heraus dieses
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
@DBNAME VARCHAR (50) ERKLÄREN
@STRSQL VARCHAR (MAX) ERKLÄREN
@strSQL EINSTELLEN = ''

curDBName CURSOR FÜR  AUSERWÄHLTEN Namen von den sysdatabases erklären
curDBName ÖFFNEN
ZUNÄCHST vom curDBName IN @DBName HOLEN
WÄHREND @@FETCH_STATUS=0
ANFANGEN
	
	@strSQL =@strSQL EINSTELLEN + 'vorwählen * von „+ @DBName +“ .dbo.sysobjects wo WO xtype= '' F-N ''' + PUTZFRAU (10)
	

curDBName IN @DBName HOLEN
ENDE
NAHES curDBName
curDBName FREIGEBEN


@STRSQL DRUCKEN
Weitere Lösungen  
 
programming4us programming4us