Please start any new threads on our new
site at https://forums.sqlteam.com. We've got lots of great SQL Server
experts to answer whatever question you can come up with.
| Author |
Topic |
|
patterc1
Starting Member
2 Posts |
Posted - 2005-11-03 : 16:13:27
|
| My @Attr var keeps getting set to the value of @a.. I'm pretty new to t-sql and I see what is happening. I'm setting the @Attr to SELECT @a but how do I tell sql that @a is a column name?DECLARE @sql varchar(500)DECLARE @Attr varchar(20)DECLARE @numAttr intDECLARE @i intDECLARE @size intDECLARE @A varchar(5)DECLARE @InvType varchar(20)SET @InvType = 'KDFLocation'SET @numAttr = 20SET @i = 1SET @size = 1SET @Attr = ''SET @sql = 'SELECT ls.LocationName, lc.locationstoragedefid, 'WHILE(@numAttr >= @i)BEGIN SET @A = 'A' + CAST(@i AS varchar(2)) + '' SET @Attr = (SELECT (@a) FROM Inv_LocationConfigurationDef WHERE LocationConfigurationName = @InvType) SELECT @sql = @sql + 'a' + CAST(@i AS varchar(2)) + ' as ' + @Attr IF(@numAttr != @i) BEGIN SELECT @sql = @sql + ', ' END ELSE BEGIN SELECT @sql = @sql + ' ' END SELECT @i = @i + 1END |
|
|
anuj164
Starting Member
49 Posts |
Posted - 2005-11-03 : 17:05:13
|
| try dynamic query. |
 |
|
|
X002548
Not Just a Number
15586 Posts |
|
|
nosepicker
Constraint Violating Yak Guru
366 Posts |
Posted - 2005-11-03 : 21:16:16
|
| I think this is what you want (I didn't check the syntax carefully though ...):DECLARE @sql varchar(500)DECLARE @Attr varchar(20)DECLARE @numAttr intDECLARE @i intDECLARE @size intDECLARE @A varchar(5)declare @str nvarchar(500)DECLARE @InvType varchar(20)SET @InvType = 'KDFLocation'SET @numAttr = 20SET @i = 1SET @size = 1SET @Attr = ''SET @sql = 'SELECT ls.LocationName, lc.locationstoragedefid, 'WHILE(@numAttr >= @i)BEGINSET @A = 'A' + CAST(@i AS varchar(2)) + ''SET @str = 'SELECT @Attr = ' + @A + ' FROM Inv_LocationConfigurationDef WHERE LocationConfigurationName = ''' + @InvType + ''''EXECUTE sp_executesql @str, N'@Attr varchar(20) OUTPUT', @Attr OUTPUTSELECT @sql = @sql + 'a' + CAST(@i AS varchar(2)) + ' as ' + @AttrIF(@numAttr != @i)BEGIN SELECT @sql = @sql + ', ' ENDELSEBEGIN SELECT @sql = @sql + ' ' END SELECT @i = @i + 1END |
 |
|
|
|
|
|