关于sql server通过变量创建数据库表出现错误的问题,求指导!
在sqlserver数据库中,创建表的语句如下:CREATETABLE[dbo].[sggdfby20140425]([hm][nvarchar](500)COLLATE...
在sql server 数据库中,创建表的语句如下:
CREATE TABLE [dbo].[sggdfby20140425](
[hm] [nvarchar](500) COLLATE Chinese_PRC_CI_AS NULL,
[有效帐务周期标识(ValidBillCyc)] [nvarchar](500) COLLATE Chinese_PRC_CI_AS NULL,
[id] [nvarchar](500) COLLATE Chinese_PRC_CI_AS NULL,
[fx] [decimal](18, 0) NULL,
[je] [decimal](18, 2) NULL,
[调整金额(Adjust)] [nvarchar](500) COLLATE Chinese_PRC_CI_AS NULL,
[原始应收金额(Receivable)] [nvarchar](500) COLLATE Chinese_PRC_CI_AS NULL,
[是否参与出帐] [nvarchar](500) COLLATE Chinese_PRC_CI_AS NULL,
[营销方案ID] [nvarchar](500) COLLATE Chinese_PRC_CI_AS NULL,
[Ilog出费规则] [nvarchar](500) COLLATE Chinese_PRC_CI_AS NULL,
[营销方案对应的金额,及减免后的金额] [nvarchar](500) COLLATE Chinese_PRC_CI_AS NULL,
[区域] [nvarchar](500) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY]但是我想通过变量来创建该数据库,结果出现错误,我写的语句如下:
declare @j varchar(500),@sql varchar(500)
set @j='20140425'
set @sql=
'CREATE TABLE [dbo].[sggdfby'+@j+'](
[hm] [nvarchar](500) COLLATE Chinese_PRC_CI_AS NULL,
[有效帐务周期标识(ValidBillCyc)] [nvarchar](500) COLLATE Chinese_PRC_CI_AS NULL,
[id] [nvarchar](500) COLLATE Chinese_PRC_CI_AS NULL,
[fx] [decimal](18, 0) NULL,
[je] [decimal](18, 2) NULL,
[调整金额(Adjust)] [nvarchar](500) COLLATE Chinese_PRC_CI_AS NULL,
[原始应收金额(Receivable)] [nvarchar](500) COLLATE Chinese_PRC_CI_AS NULL,
[是否参与出帐] [nvarchar](500) COLLATE Chinese_PRC_CI_AS NULL,
[营销方案ID] [nvarchar](500) COLLATE Chinese_PRC_CI_AS NULL,
[Ilog出费规则] [nvarchar](500) COLLATE Chinese_PRC_CI_AS NULL,
[营销方案对应的金额,及减免后的金额] [nvarchar](500) COLLATE Chinese_PRC_CI_AS NULL,
[区域] [nvarchar](500) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY]'
exec(@sql)如以下截图,执行上述语句后出现如下错误
我已经仔细核对了,完全找不出出错的原因,这是什么细节没注意导致的吗?还请各位高手指点一下,谢谢! 展开
CREATE TABLE [dbo].[sggdfby20140425](
[hm] [nvarchar](500) COLLATE Chinese_PRC_CI_AS NULL,
[有效帐务周期标识(ValidBillCyc)] [nvarchar](500) COLLATE Chinese_PRC_CI_AS NULL,
[id] [nvarchar](500) COLLATE Chinese_PRC_CI_AS NULL,
[fx] [decimal](18, 0) NULL,
[je] [decimal](18, 2) NULL,
[调整金额(Adjust)] [nvarchar](500) COLLATE Chinese_PRC_CI_AS NULL,
[原始应收金额(Receivable)] [nvarchar](500) COLLATE Chinese_PRC_CI_AS NULL,
[是否参与出帐] [nvarchar](500) COLLATE Chinese_PRC_CI_AS NULL,
[营销方案ID] [nvarchar](500) COLLATE Chinese_PRC_CI_AS NULL,
[Ilog出费规则] [nvarchar](500) COLLATE Chinese_PRC_CI_AS NULL,
[营销方案对应的金额,及减免后的金额] [nvarchar](500) COLLATE Chinese_PRC_CI_AS NULL,
[区域] [nvarchar](500) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY]但是我想通过变量来创建该数据库,结果出现错误,我写的语句如下:
declare @j varchar(500),@sql varchar(500)
set @j='20140425'
set @sql=
'CREATE TABLE [dbo].[sggdfby'+@j+'](
[hm] [nvarchar](500) COLLATE Chinese_PRC_CI_AS NULL,
[有效帐务周期标识(ValidBillCyc)] [nvarchar](500) COLLATE Chinese_PRC_CI_AS NULL,
[id] [nvarchar](500) COLLATE Chinese_PRC_CI_AS NULL,
[fx] [decimal](18, 0) NULL,
[je] [decimal](18, 2) NULL,
[调整金额(Adjust)] [nvarchar](500) COLLATE Chinese_PRC_CI_AS NULL,
[原始应收金额(Receivable)] [nvarchar](500) COLLATE Chinese_PRC_CI_AS NULL,
[是否参与出帐] [nvarchar](500) COLLATE Chinese_PRC_CI_AS NULL,
[营销方案ID] [nvarchar](500) COLLATE Chinese_PRC_CI_AS NULL,
[Ilog出费规则] [nvarchar](500) COLLATE Chinese_PRC_CI_AS NULL,
[营销方案对应的金额,及减免后的金额] [nvarchar](500) COLLATE Chinese_PRC_CI_AS NULL,
[区域] [nvarchar](500) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY]'
exec(@sql)如以下截图,执行上述语句后出现如下错误
我已经仔细核对了,完全找不出出错的原因,这是什么细节没注意导致的吗?还请各位高手指点一下,谢谢! 展开
2个回答
展开全部
//如果表不存在则创建
IF not EXISTS (SELECT name FROM sysobjects
WHERE name =@tablename AND type = 'U')
begin
set@createtable='create table '+ @tablename+' (myname char(2))'
exec(@createtable)
end
IF not EXISTS (SELECT name FROM sysobjects
WHERE name =@tablename AND type = 'U')
begin
set@createtable='create table '+ @tablename+' (myname char(2))'
exec(@createtable)
end
追问
我问的不是单纯的怎么creat table,想问的是如果通过变量creat一个连表结构都要进行设定的表,就像我写的上述语句那样,只不过是语句中出现语法错误,我找不出到底是哪里出错了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询