Pin*_*inu 7 t-sql sql-server sql-server-2005 sql-server-2008
这是不正确的,我们不能动态地将表名传递给选择查询吗?
这给了我一个错误'必须声明表变量@TblName'
DECLARE @TblName VARCHAR(30)
SET @TblName = 'User'
SELECT *
FROM @TblName
Run Code Online (Sandbox Code Playgroud)
小智 14
您需要创建动态SQL查询,最好使用QUOTENAME函数.您可以使用QUOTENAME函数避免恶意输入的任何问题.
下面是一个示例脚本,演示了如何通过传入表名来创建动态SQL查询来查询表.您可以按值将表名更改为变量@tablename.
CREATE TABLE sample
(
id INT NOT NULL
);
INSERT INTO sample (id) VALUES
(1),
(2),
(3),
(4),
(5),
(6);
Run Code Online (Sandbox Code Playgroud)
DECLARE @execquery AS NVARCHAR(MAX)
DECLARE @tablename AS NVARCHAR(128)
SET @tablename = 'sample'
SET @execquery = N'SELECT * FROM ' + QUOTENAME(@tablename)
EXECUTE sp_executesql @execquery
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
35802 次 |
| 最近记录: |