declare @var varchar(max),@course varchar(max)
set @var='ABC'
set @Query=''
set @Query='
select @course=PARAM from TABLE where PARAM='''[email protected]+''''
print @Query
exec (@Query)
輸出參數值由於上述查詢返回一個錯誤獲取從動態SQL
必須聲明標量變量「@course」
這裏的查詢是我的替代以下是現在讓這個查詢成功。
declare @var varchar(max),@course varchar(max),@Query varchar(max)
Create table #temp(param1 varchar(max))
set @var='ABC'
set @Query=''
set @Query='insert #temp(param1)
select PARAM from TABLE where PARAM='''[email protected]+''''
print @Query
exec (@Query)
select @course=param1 from #temp
drop table #temp
除了上面提到的解決方案之外,還有其他更好的替代方案嗎?
正如你所看到的,我想基於這樣的條件指定從「TABLE」檢索到的值。這裏我使用了exec(@Query),因爲在我的要求中,「TABLE」的名稱是動態的(比如'TABLE_2012','TABLE_2013'),所以我應該動態地形成查詢。 –
TABLE_2012和TABLE_2013聽起來像是一個糟糕的設計決定。爲什麼不在一年的列上分割或聚集單個表格?現在你不需要動態SQL,性能會非常相似,並且模式管理將變得更容易。 –