如何在带有变量的选择查询中使用 SQL Server 表名? [英] How do I use SQL Server table name in select query with a variable?

查看:33
本文介绍了如何在带有变量的选择查询中使用 SQL Server 表名?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这是不对的,我们不能将表名动态传递给选择查询吗?

Is this incorrect, can't we pass the table name to a select query dynamically?

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

This is giving me a error 'Must declare the table variable @TblName'

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

推荐答案

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

You need to create a dynamic SQL query, preferably using the QUOTENAME function. You can avoid any issues from malicious input by using QUOTENAME function.

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

Here is a sample script that illustrates how to query a table by creating a dynamic SQL query by passing in a table name. You can change the table name by value to the variable @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

演示:

点击此处查看 SQL Fiddle 中的演示.

动态 SQL 的诅咒和祝福

这篇关于如何在带有变量的选择查询中使用 SQL Server 表名?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆