SQL Server 2005中的临时表创建问题



当我创建值并将其插入到临时表中时,在SQLServer2005数据库中出现了此错误。

Msg 102,Level 15,State 1,Line 5
附近的语法不正确

但是当我在SQL Server 2008及更高版本中运行确切的代码时,我可以成功地创建行。

旧版本有限制吗?还是只是一些背景问题?

这些是我的代码示例

create table #CustCodesMapping 
(
     NewCustCode varchar(30), 
     OldCustCode varchar(30) collate database_default
)
insert into #CustCodesMapping
values ('11111', 'aaaaa'), ('22222', 'bbbbb'), ('33333', 'ccccc')

但当我只加一个值时,它就起的作用

create table #CustCodesMapping 
(
     NewCustCode varchar(30), 
     OldCustCode varchar(30) collate database_default
)
insert into #CustCodesMapping
values ('11111', 'aaaaa')

重申我的评论:

为什么你还在使用SQLServer2005,它已经完全不受支持5年了;升级的时间已经过去很久了。

同样,问题是因为您使用的SQL Server版本太过时了。SQL Server 2008中引入了允许多行的VALUES(这也是完全不受支持的(。你必须使用真正2005年的旧方法:

CREATE TABLE #CustCodesMapping (NewCustCode varchar(30),
                                OldCustCode varchar(30) COLLATE DATABASE_DEFAULT);
INSERT INTO #CustCodesMapping (NewCustCode,OldCustCode)
SELECT '11111',
       'aaaaa'
UNION ALL
SELECT '22222',
       'bbbbb'
UNION ALL
SELECT '33333',
       'ccccc';

真正的解决方案是升级到支持的版本。不幸的是,当您使用2005时,这意味着要进行2次升级。2005年->2012年->支持的版本。

最新更新