2016-03-31 12 views
1

Ich versuche eine Alternative zum Festlegen des Inhalts einer Variablen als eine große Abfrage zu finden, in der ich Werte dynamisch ersetze. Ist es möglich, so etwas zu tun?SQL - Wählen Sie aus Variable

declare @serv nvarchar(max) 
set @serv = '[linkedServName].[dataBaseName]' 
select top 10 * from @serv.dbo.someTable 

Wenn ja, können Sie mir bitte die korrekte Syntax zeigen?

Vielen Dank für Ihre Zeit

+1

Sie auf diese Weise nicht verwenden können, können Sie dynamische SQL verwenden müssen :) –

+1

Sie müssen 'exec (‚Abfrage‘)' für diese –

+0

ich sehe, ich danke Ihnen allen – CM2K

Antwort

2

Wenn Sie den Server und die Datenbank Sie auswählen parametrieren wollen, dann müssen Sie die dynamische SQL verwenden. Versuchen Sie folgendes:

declare @serv nvarchar(max) 
declare @qry nvarchar(max) 

set @serv = '[linkedServName].[dataBaseName]' 
set @qry = 'select top 10 * from ' + @serv + '.dbo.someTable' 

exec(@qry) 
+0

Ich war mit irgendwie ähnlich. Das wäre also der einzige Weg, um zu gehen? Ich habe versucht, genau diese Situation zu vermeiden: in der ich eine zusätzliche Variable habe. Vielen Dank für die Antwort, es ist ein wirklich gutes und klares Beispiel – CM2K

+0

@ CM2K Ich möchte den Namen zu parametrisieren, dann dynamische SQL ist der einzige Weg, ich habe Angst. –

+0

Ich verstehe, danke für die Klarstellung – CM2K