Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 如何在带有变量的select查询中使用SQL Server表名?_Sql Server_Sql Server 2008_Tsql_Sql Server 2005 - Fatal编程技术网

Sql server 如何在带有变量的select查询中使用SQL Server表名?

Sql server 如何在带有变量的select查询中使用SQL Server表名?,sql-server,sql-server-2008,tsql,sql-server-2005,Sql Server,Sql Server 2008,Tsql,Sql Server 2005,这不正确吗?我们不能动态地将表名传递给select查询吗 这给了我一个错误“必须声明表变量@TblName” DECLARE @TblName VARCHAR(30) SET @TblName = 'User' SELECT * FROM @TblName 您必须使用dynamicsql执行 用@selectstr 使用exec sp_executesql@selectstr您需要创建动态SQL查询,最好使用函数。通过使用QUOTENAME函数,可以避免恶意输入带来的任何问题 下面是一个示例

这不正确吗?我们不能动态地将表名传递给select查询吗

这给了我一个错误“必须声明表变量@TblName”

DECLARE @TblName VARCHAR(30)
SET @TblName = 'User'
SELECT * 
FROM @TblName

您必须使用
dynamic
sql执行

@selectstr


使用exec sp_executesql@selectstr

您需要创建动态SQL查询,最好使用函数。通过使用QUOTENAME函数,可以避免恶意输入带来的任何问题

下面是一个示例脚本,演示了如何通过传入表名创建动态SQL查询来查询表。您可以将表名按值更改为变量
@tablename

为示例创建和插入脚本: 动态SQL脚本: 演示:

建议改为:

您可以通过使用动态查询来完成此操作,请查看下面的复选框

DECLARE @TblName VARCHAR(30)

DECLARE @vQuery NVARCHAR(100)

SET @TblName = 'User'

SET @vQuery = 'SELECT * FROM ' + @TblName

EXECUTE sp_executesql @vQuery

sp_executesql的参数必须是nvarchar/nchar/ntext-1——只给某人动态SQL的代码而不解释它是一个非常糟糕的主意<代码>这里有一把枪,试着不要开枪。非常正确地回答@Sive提供的问题,我会在下次学习:)可能重复的
DECLARE @execquery AS NVARCHAR(MAX)
DECLARE @tablename AS NVARCHAR(128)

SET @tablename = 'sample'
SET @execquery = N'SELECT * FROM ' + QUOTENAME(@tablename)

EXECUTE sp_executesql @execquery
DECLARE @TblName VARCHAR(30)

DECLARE @vQuery NVARCHAR(100)

SET @TblName = 'User'

SET @vQuery = 'SELECT * FROM ' + @TblName

EXECUTE sp_executesql @vQuery