我有一个逗号分隔的字符串,其中包含列名,即
"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
替换上面的硬编码列名。这将包括将逗号分隔的参数拆分为各个列名称。
答案 0 :(得分:2)
在这种情况下,您需要使用动态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。
答案 1 :(得分:2)
你可以试试这个:
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语法
如果您需要有关如何拆分字符串的信息,可以查看此主题:Split function equivalent in T-SQL?