【问题标题】:sp_executesql ; Msg 102, Level 15 Incorrect syntax nearsp_executesql ;消息 102,级别 15 附近的语法不正确
【发布时间】:2018-06-19 15:16:22
【问题描述】:

我一直在寻找一段时间,但仍然找不到答案。 我正在尝试使用一个非常简单的存储过程 sp_executesql 来创建数据库或表。

    exec sp_executesql
     N'create database @d',
     N'@d nvarchar(1)',
     @d = 'a';

或者这个

    exec sp_executesql 
    N'create table @d',
    N'@d nvarchar(9)',
    @d=N'MyTable'

继续收到此消息:

消息 102,级别 15,状态 1,行 1 '@d' 附近的语法不正确。

我不明白为什么?

【问题讨论】:

  • How to use a variable for the database name in T-SQL? 的可能重复您应该知道,在非动态 SQL 中作为文本执行时不可能的事情,在通过动态 SQL 作为文本执行时也是不可能的。所以你不能只使用变量来引用对象。但是,由于您使用的是动态 SQL,您可以将它们连接到查询中,这样它们就不再是变量了。
  • 我不知道您不能使用数据库作为参数。这就是为什么我没有找到上述答案的原因,我的问题是研究 ado.net 的结果。

标签: sql-server tsql stored-procedures


【解决方案1】:

在这种情况下,SQL Server 将不接受变量。有关选项,请参见此处:

How to use a variable for the database name in T-SQL?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-02-28
    • 2019-06-30
    • 2016-10-28
    • 2019-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多