DECLARE @datechar varchar(10)
SET @datechar= CONVERT(varchar(10), GETDATE(), 23)
CREATE TABLE [dbo].[completeTopic_'+@datechar+']
表名后面加个日期后缀.
如果把语句放进nvarchar中
SET @sqlchar='CREATE TABLE [dbo].[completeTopic_'+@datechar+']
会有错误提示会提示 Incorrect syntax near the keyword 'CREATE'.
建表的语句包括索引 约束 默认值 索引名字也是有日期后缀的,怎么拼接一个日期字符串到SQL语句中.
------解决方案--------------------
右边少了一个引号,然后得加上括号 和 字段,
修改了一下你的代码,简单的例子:
DECLARE @datechar varchar(10)
declare @sqlchar nvarchar(1000)
SET @datechar= CONVERT(varchar(10), GETDATE(), 23)
SET @sqlchar='CREATE TABLE [dbo].[completeTopic_'+@datechar+'](' +
'a int,b datetime,c varchar(10)'+
')'
select @sqlchar
--exec(@sqlchar)
------解决方案--------------------
拼接里面不能用go,你试试这种写法:
DECLARE @sql NVARCHAR(max)
SET @sql='select 1'+CHAR(13)+'go'+CHAR(13)+'select 2'
print(@sql)
/*
select 1
go
select 2
*/
------解决方案--------------------
这个go,只是在ssms中执行是可以的,但是如果放到语句当中,动态执行会有问题:
exec('select 1;
go
select 2;')
/*
消息 102,级别 15,状态 1,第 2 行
'go' 附近有语法错误。
*/------解决方案--------------------
可以把@sqlchar的内容打印出来,手工执行看哪里报错,
-- 把exec(@sqlchar)暂时换为如下语句
print @sqlchar