带变量的动态SQL服务器查询(执行问题)

时间:2017-06-30 09:42:35

标签: sql-server tsql stored-procedures

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

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

第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

为了解决这个问题,我尝试使用诸如引号之类的东西并使用格式,但似乎没有任何效果。

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

2 个答案:

答案 0 :(得分:1)

问题在于你如何调用你的程序。

执行james_tester'dbo.Calendar '

应该是

执行james_tester'dbo.Calendar'

因此出现错误信息:

  

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

答案 1 :(得分:1)

Table是sql server的关键字。 因此,您无法将其用作[]的别名。 试试这个

execute james_tester 'dbo.Calendar [table]'

execute james_tester 'dbo.Calendar t'

execute james_tester 'dbo.Calendar'