2012-10-15 12 views
12

Eventuali duplicati:
SQL: Select dynamic column name based on variablePosso passare variabile per selezionare economico come nome di colonna in SQL Server

Ho la seguente semplice select dichiarazione:

DECLARE @value varchar(10) 
SET @value = 'intStep' 

SELECT @value FROM dbo.tblBatchDetail 

I aver provato

SELECT CAST(@value AS varchar(10)) FROM dbo.tblBatchDetail 

e tutto quello che ottiene una lista di intstep

DOMANDA: posso passare variabile come nome della colonna a questa affermazione? O che cosa è il modo migliore di fare questo

sto usando SQL Server 2008 (9,0 RTM)

Questa sarà una stored procedure

Grazie in anticipo

+1

Penso che questo sia un dup di questa domanda [Utilizzo di SQL dinamico per specificare un nome di colonna aggiungendo una variabile a semplice sql query] (http://stackoverflow.com/questions/7123659/using-dynamic-sql-to-specify-a-column-name-by-adding-a-variable-to-simple-sql-qu) – Spevy

risposta

26

Non è possibile utilizzare nomi variabili per associare colonne o altri oggetti di sistema, è necessario sql dinamico

DECLARE @value varchar(10) 
SET @value = 'intStep' 
DECLARE @sqlText nvarchar(1000); 

SET @sqlText = N'SELECT ' + @value + ' FROM dbo.tblBatchDetail' 
Exec (@sqlText) 
+0

ottengo questo errore Msg 2812, livello 16, stato 62, riga 6 Impossibile trovare la stored procedure 'SELECT intStep FROM dbo.tblBatchDetail'. –

+2

Mi dispiace, ho dimenticato le parentesi intorno a @sqlText, la risposta aggiornata – Steve

+0

funziona ora grazie –

Problemi correlati