Stored-Procedures
SQL - 在 SELECT 語句和 WHERE 子句中使用變數作為列
任何人都可以請支持我解決以下問題
我想在 Select 語句中使用變數列名。但是當我給出變數時 - 它給出了列名本身
注意:我在列中的數據是 INT,但列標題是 Varchar。
有關程式碼和結果,請參閱附圖(預期和目前)
程式碼 :
Alter Procedure dbo.dayplanv00 ( @dt as varchar(255) = '[15-04-2017]', @fg as nvarchar(255)= 'XC 1 IEC' ) as begin Select [15-04-2017] as dt from RollingPlanWK15 where FNGD = 'XC 1 IEC' END Execute dbo.dayplanv00
您需要使用動態sql來使用變數作為列名,嘗試:
ALTER PROCEDURE dbo.dayplanv00 ( @dt nvarchar(255) = '[15-04-2017]' ,@fg nvarchar(255)= 'XC 1 IEC' ) AS BEGIN DECLARE @sql nvarchar(200)= 'Select ' + @dt + ' as dt from RollingPlanWK15 where FNGD = ''' + @fg + '''' EXEC sp_executesql @sql END
注意,你想要那些預設值嗎?(在我看來)將它作為執行過程的必填欄位會更有意義,這樣您就不會意外地在沒有值的情況下執行它並假定它是正確的