【发布时间】: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