Sql server 带变量的动态SQL server查询(执行时出现问题)

Sql server 带变量的动态SQL server查询(执行时出现问题),sql-server,tsql,stored-procedures,Sql Server,Tsql,Stored Procedures,这是查询的一个小得多的版本,它基本上需要一个表的变量来运行所有内容 当我运行该过程时,会收到错误消息: Msg 156,第15级,状态1,第2行 关键字“table”附近的语法不正确 alter procedure james_tester @tablename nvarchar(200) as BEGIN declare @sql nvarchar(max) set @sql = ' select * f

这是查询的一个小得多的版本,它基本上需要一个表的变量来运行所有内容

当我运行该过程时,会收到错误消息:

Msg 156,第15级,状态1,第2行 关键字“table”附近的语法不正确

alter procedure james_tester
@tablename nvarchar(200)
as

        BEGIN
        declare @sql nvarchar(max)

        set @sql =  

        '
        select * from ' 

        + @tablename

            EXECUTE sp_executesql @sql

        END
为了解决这个问题,我尝试了使用quotename之类的东西,并对格式进行了修改,但似乎没有任何效果


执行james_tester'dbo.Calendar table'(这就是我要查询的表)

问题在于如何调用过程

执行james_测试仪“dbo.Calendar表”

应该是

执行james_测试仪“dbo.Calendar”

因此出现错误消息:

关键字“表”附近的语法不正确


问题在于如何调用您的过程

执行james_测试仪“dbo.Calendar表”

应该是

执行james_测试仪“dbo.Calendar”

因此出现错误消息:

关键字“表”附近的语法不正确


是sql server的关键字。 因此,如果没有
[]
,则无法将其用作别名。 试试这个


是sql server的关键字。 因此,如果没有
[]
,则无法将其用作别名。 试试这个


谢谢选择*进入表格“日历”,重复所有步骤,一切正常!谢谢选择*进入表格“日历”,重复所有步骤,一切正常!
execute james_tester 'dbo.Calendar [table]'
execute james_tester 'dbo.Calendar t'
execute james_tester 'dbo.Calendar'