考慮我有一個表TEMP兩個字段
單元區中
==== ====
1單元1區
UNIT2 2區
如何使用字符串列名動態SQL內
我正嘗試使用動態查詢實現以下簡單查詢的結果
select UNIT, ZONE from TEMP
我的動態查詢是gi VEN低於
declare @qry nvarchar(1000)
set @qry= 'declare @str varchar(100) = ''UNIT, ZONE''
select @str from TEMP '
execute sp_executesql @qry
但這查詢選擇字符串值( '' 單位,ZONE ''),而不是下面的行
Unit1 Zone1
Unit2 Zone2
在短:我怎樣才能知道SQL是@str指定表中的列?
我知道這可以通過提供參數如下完成,但不幸的是這不是我想要的。
declare @qry varchar(1000)
declare @str varchar(100) = 'UNIT, ZONE'
set @qry ='select ' + @str + ' from TEMP'
execute sp_executesql @qry
究竟爲什麼你不想這樣做,你已經知道的工作方式?使用DynamicSQL *(動態編寫一個用sp_executesql執行的新查詢)*的全部原因是您的變量只能是字符串值,並且不能是對象(數據庫,模式,表,列等)引用... – MatBailie
解釋你爲什麼不想使用你已知的方法。如果我們不知道爲什麼你找到的不適用 – Paolo
@Paolo感謝您的回覆,我們無法給您一個選擇。我知道它看起來很奇怪,但是字段名也是動態生成的,所以在調用'execute'之前我不能聲明它。在替換值時,我可以將查詢作爲_select foo與temp_,而不是_select從temp_中選擇'foo'? –