如何将列名和表名作为参数传递给SQL Server中的存储过程?

时间:2014-02-25 08:15:06

标签: c# sql sql-server

我有一个存储过程,它将列名和表名作为参数。

ALTER PROCEDURE [dbo].[usp_TableReporting_GetColumnNamesAndValues]
    @concatstring AS VARCHAR(100),
    @Tablename as VARCHAR(100)
AS
BEGIN
    SELECT @concatstring FROM @Tablename
END

这个程序给我一个错误:

  

必须声明标量变量@TableName

虽然我已经宣布它在顶部。

1 个答案:

答案 0 :(得分:5)

使用动态SQL:

ALTER PROCEDURE [dbo].[usp_TableReporting_GetColumnNamesAndValues]
@concatstring AS VARCHAR(100),
@Tablename as VARCHAR(100)

AS
BEGIN
    Declare @mystring varchar(max) = N'select ' +  @concatstring + ' from ' + @Tablename
    exec (@mystring)

END