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

Par*_*h Y 1 sql-server

你能告诉我这个查询有什么问题吗?我正在尝试编写 SQL 查询来动态创建表

DECLARE @SQLString NVARCHAR(MAX)

SET @SQLString =+ 'Create Table' + GETDATE() + '_' + 'Table' + '' + '(' + 'Column1' + ' ' + 'Nvarchar(50)' + 'Null' + ')' +

Exec @SQLString ;
Run Code Online (Sandbox Code Playgroud)

Joh*_* N. 7

您的字符串存在多个问题@SQLString

  1. 你不需要+在开始和结束
  2. 日期不会在没有转换(CAST 或 CONVERT)的情况下与 nvarchar 连接
  3. 因为您的表格将包含空格,所以您需要将表格名称放在方括号中:[]
  4. 你会过得更好 exec sp_executesql @SQLString

所以你的脚本可能适用于这个:

DECLARE @SQLString NVARCHAR(MAX)
SET @SQLString = 'Create Table [' + CAST(GETDATE() AS NVARCHAR(30))+ '_Table]' + ' (' + 'Column1' + ' ' + 'Nvarchar(50) Null' + ')' 
PRINT @SQLString
-- Exec sp_executesql @SQLString
Run Code Online (Sandbox Code Playgroud)

我建议阅读CREATE TABLE语句和String Functions。然后继续阅读数据类型转换文档并了解sp_executesql语法。

祝你好运。

  • 就在这里的钱。此外,是否 | ' (' + 'Column1' + ' ' + 'Nvarchar(50) Null' + ')' | 连接中的部分似乎有点过分?从技术上讲,它可以只是 | ' (Column1 Nvarchar(50) Null) ' | 对。我的意思是如果 Column1 是变量或参数,我会看到该值,但在这里它没有多大意义。 (2认同)