Vraag : t-sql van een lus voorziend door een temperaturenlijst

Ik heb een temperaturenlijst die gegevensbestandnamen bevat die op mijn SqlServer bestaan en varaible FO zouden willen overgaan de databsenaam om gegevens in sysobjects en syscolumns voor elk gegevensbestand te halen.

Below is een opgeslagen procedurecode waar ExtractorControl een gegevensbestand dat altijd in de code zal zijn maar „gmc“ is één van de gegevensbestanden is die in de temperaturenlijst bestaat. Ik zou deze het werk code willen veranderen zodat ik door elk gegevensbestand (ApplicationCode) en acumulate rijen kan van een lus voorzien dat ik van elke sysobjects en syscolumns binnen elke database.
nodig heb
" codeBody "
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
This is de temperaturenlijst:

SELECTEER VERSCHILLENDE ApplicationCode VAN ExtractorControl. .EditChecks

Dit is waar ik de parameter ApplicationCode wil spelen:

    SELECTEER ExtractorControl. .FilesToProcess.ApplicationCode, ExtractorControl. .FilesToProcess.RootFile, ExtractorControl. .FilesToProcess.DestinationTable, gmc. .syscolumns.name ALS „Naam van de Kolom“
    IN #TableStructures
    VAN (ExtractorControl. .FilesToProcess BINNEN SLUIT zich aan gmc. bij .sysobjects OP ExtractorControl. .FilesToProcess.DestinationTable = gmc. .sysobjects.name) BINNEN SLUIT me aan gmc. bij .syscolumns OP gmc. .sysobjects.id = gmc. .syscolumns.id
    GROEP DOOR ExtractorControl. .FilesToProcess.ApplicationCode, ExtractorControl. .FilesToProcess.RootFile, ExtractorControl. .FilesToProcess.DestinationTable, gmc. .syscolumns.name, gmc. .sysobjects.xtype
    HEBBEND (gmc. .sysobjects.xtype) = „U“

Antwoord : t-sql van een lus voorziend door een temperaturenlijst

U moet dynamische sql gebruiken.
checxk uit dit
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
VERKLAAR @DBNAME VARCHAR (50)
VERKLAAR @STRSQL (MAXIMUM) VARCHAR
PLAATS @strSQL = ''

verklaar curDBName CURSEUR  VOOR UITGEZOCHTE naam VAN sysdatabases
OPEN curDBName
HAAL DAARNA VAN curDBName IN @DBNAME
TERWIJL @@FETCH_STATUS=0
BEGIN
	
	PLAATS @strSQL =@strSQL + 'selecteren * van „+ @DBName +“ .dbo.sysobjects waar WAAR xtype= '' F-N ''' + VERKOOLT (10)
	

HAAL curDBName IN @DBName
EIND
DICHTE curDBName
DEALLOCATE curDBName


DRUK @STRSQL
Andere oplossingen  
 
programming4us programming4us