Stored-Procedures

SQL - 在 SELECT 語句和 WHERE 子句中使用變數作為列

  • April 12, 2017

預期結果

儲存過程的錯誤結果

任何人都可以請支持我解決以下問題

我想在 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

注意,你想要那些預設值嗎?(在我看來)將它作為執行過程的必填欄位會更有意義,這樣您就不會意外地在沒有值的情況下執行它並假定它是正確的

引用自:https://dba.stackexchange.com/questions/170798