我想在SQL Server存儲過程中生成select語句。我有SQL參數中的列名稱。SQL Server:在具有動態列名的存儲過程內動態生成select語句
我想用選定的列名以編程方式生成select語句,但似乎無法在存儲過程中找到正確的語法。
CREATE PROCEDURE dbo.aProc
@testCondition int,
@colCount int,
@column_1 varchar(100) = null,
....
@column_40 varchar(100) null
AS
DECLARE @qry nvarchar(3000)
DECLARE @Iterator int
SET @testtype = 2
SET @Iterator = 0
SET @qry ='SELECT '
WHILE (@Iterator < @colCount-1)
BEGIN
SET @qry = @qry + ''[email protected]_''+CAST(@Iterator as varchar(2))+',''
Set @Iterator = @Iterator + 1
END
SET @qry = @qry + ''@column_+CAST(@colCount as varchar(2)) FROM aTable where aCol = @testCondition
你爲什麼需要+''+零件?你也有2個引號,而不是冒號後的引號。你能解釋一下你試圖在你的proc中實現什麼嗎? –
我想根據想要查看的列生成SELECT stmnt,所以對我來說最簡單的方法是在sql para中傳遞列名並基於它們,我在存儲過程中動態生成sql select stmnt。 – user1889838
嗯,我會說更改你的proc簽名更容易,你可以傳遞像'column1,column2,column3'等字符串,如果你真的確定你想要做這個任務 –