如何在 SQL Server 查询的 FROM 子句中使用变量?

Pla*_*er1 2 t-sql sql-server

我正在创建一个查询,该查询将选择表中的所有数据。查询将根据我将传递给存储过程的变量选择到表。

在我的例子中。如果我执行example_sp table1它会在table1. 同样的事情,如果我使用example_table table2,它应该选择table2.

ALTER PROCEDURE example_sp
    @type varchar(10), -- value will be `table1` or `table2`
AS
BEGIN
    SELECT * FROM @type
END
Run Code Online (Sandbox Code Playgroud)

M.A*_*Ali 5

戈登建议的略有不同的版本......

ALTER PROCEDURE example_sp
    @TableName SYSNAME   --<-- Use appropriate data type for sql server objects
AS
BEGIN
  SET NOCOUNT ON;

  Declare @Sql NVARCHAR(MAX);

  SET @Sql = N' SELECT * FROM ' + QUOTENAME(@TableName)

  Exec sp_executesql @Sql
END
Run Code Online (Sandbox Code Playgroud)