加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

sql-server – 如何在带有变量的select查询中使用SQL Server表名

发布时间:2020-12-12 06:59:47 所属栏目:MsSql教程 来源:网络整理
导读:这是不正确的,我们不能动态地将表名传递给选择查询吗? 这给了我一个错误’必须声明表变量@TblName’ DECLARE @TblName VARCHAR(30)SET @TblName = 'User'SELECT * FROM @TblName 解决方法 您需要创建动态SQL查询,最好使用 QUOTENAME 函数.使用QUOTENAME函数
这是不正确的,我们不能动态地将表名传递给选择查询吗?

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

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

解决方法

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

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

为示例创建和插入脚本:

CREATE TABLE sample
(
    id INT NOT NULL
);

INSERT INTO sample (id) VALUES
  (1),(2),(3),(4),(5),(6);

动态SQL脚本:

DECLARE @execquery AS NVARCHAR(MAX)
DECLARE @tablename AS NVARCHAR(128)

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

EXECUTE sp_executesql @execquery

演示:

Click here to view the demo in SQL Fiddle.

建议阅读:

The Curse and Blessings of Dynamic SQL

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读