Use variable Column name in Select statement on SQL server 2008 -
i select value table using column name variable !
eg
declare @spalte varchar(10) set @spalte = 'ecomp' select @spalte dbo.matdata 2>= tmin , 2<=tmax , 1 = matcode
when try 'ecomp' back, not expected value.
any idea?
information_schema meta data describing objects in database - isn't placeholder table.
if want return data table, then
select * dbo.matdata 2 >= tmin , 2<=tmax , 1 = matcode
if want build query against table don't have schema for, need build dynamic sql query , call sp_executesql.
edit :
to select 1 column:
select eocomp dbo.matdata 2 >= tmin , 2<=tmax , 1 = matcode
edit #2 :
your updated question doesn't bear resemblance original q, , you've accepted redfilter's answer.
to select dynamic column, need dynamic sql. can't call procs udf, , udfs should return standard type (if scalar) or table.
here's how sproc:
given
create table dbo.matdata ( column1 int, column2 nvarchar(100), column3 datetime, tmin int, tmax int, matcode int )
and proc
create proc dbo.getcolumnfrommatdata(@spalte nvarchar(256)) begin set nocount on declare @sql nvarchar(max) set @sql = 'select @spalte dbo.matdata 2>= tmin , 2<=tmax , 1 = matcode' exec sp_executesql @sql, n'@spalte nvarchar(256)', @spalte=@spalte end
you can do
exec dbo.getcolumnfrommatdata 'column1' exec dbo.getcolumnfrommatdata 'column2' exec dbo.getcolumnfrommatdata 'column3' exec dbo.getcolumnfrommatdata 'tmax'
etc
but it's pretty horrible, imho.
Comments
Post a Comment