如何在动态sql查询中设置表名?

我想在动态SQL查询中设置表名.

我尝试成功参数如下:

/* Using sp_executesql */
/* Build and Execute a Transact-sql String with a single parameter 
value Using sp_executesql Command */

/* Variable Declaration */
DECLARE @EmpID AS SMALLINT
DECLARE @sqlQuery AS NVARCHAR(500)
DECLARE @ParameterDeFinition AS NVARCHAR(100)
/* set the parameter value */
SET @EmpID = 1001
/* Build Transact-sql String by including the parameter */
SET @sqlQuery = 'SELECT * FROM tblEmployees WHERE EmployeeID = @EmpID' 
/* Specify Parameter Format */
SET @ParameterDeFinition =  '@EmpID SMALLINT'
/* Execute Transact-sql String */
EXECUTE sp_executesql @sqlQuery,@ParameterDeFinition,@EmpID

现在我想使用参数动态地使用TABLE NAME,但是我没有这样做.

请指导我

解决方法

名称不能作为参数提供,因此您必须手动构造sql字符串:
SET @sqlQuery = 'SELECT * FROM ' + @TableName + ' WHERE EmployeeID = @EmpID'

但是,请确保您的应用程序不允许用户直接输入@TableName的值,因为这将使您的查询容易受到sql注入的影响.

相关文章

SELECT a.*,b.dp_name,c.pa_name,fm_name=(CASE WHEN a.fm_n...
if not exists(select name from syscolumns where name=&am...
select a.*,pano=a.pa_no,b.pa_name,f.dp_name,e.fw_state_n...
要在 SQL Server 2019 中设置定时自动重启,可以使用 Window...
您收到的错误消息表明数据库 'EastRiver' 的...
首先我需要查询出需要使用SQL Server Profiler跟踪的数据库标...