簡體   English   中英

如何將列的字符串數組作為參數傳遞給SQL Server存儲過程

[英]How to pass string array of Columns as parameter to SQL Server Stored procedure

我有一個逗號分隔的字符串,列名稱為

"Column1, Column2, Column3"將作為參數傳遞到以下存儲過程。

我的存儲過程如下:

@ColNames VARCHAR(1000)

Select ROW_NUMBER() OVER (ORDER BY Column1, Column2, Column3) AS RowNum, 
Column1, Column2, Column3
INTO #Results
From Table A 

我想用參數@colNames替換上面的硬編碼列名。 這將包括用逗號分隔的參數拆分為單獨的列名稱。

在這種情況下,您需要使用動態SQL並使用sp_executesql對其執行。
例如:

DECLARE @ColNames VARCHAR(1000)
DECLARE @sSQL NVARCHAR(MAX)

SET @ColNames ='Column1, Column2,...'

SET @sSQL = 'SELECT ' + @ColNames + ' FROM myTable....'

exec sp_executesql @sSQL



我對此也做了一個快速的SQLFiddle

您可以嘗試以下方法:

CREATE PROCEDURE yourId (@columns VARCHAR(1000))
AS
BEGIN
DECLARE @s_query VARCHAR(MAX)

SET @s_query = 'Select ROW_NUMBER() OVER (ORDER BY ' + @columns + ') AS RowNum, ' + @columns + ' From A'

EXEC(@s_query)
END

這是用於t sql語法

如果您需要有關如何分割字符串的信息,可以在此線程上看看: 分割函數是否等效於T-SQL?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM