不同SQL Server版本上的代码冲突

不同SQL Server版本上的代码冲突,sql,sql-server,Sql,Sql Server,我有一个代码可以插入一行100次。问题是,我的代码适用于SQLServer2008R2和2012,但不适用于2005年。我也需要让它在2005年起作用 这是我的密码: DECLARE @ctr as INT = 1 WHILE @ctr < 128 BEGIN INSERT INTO DftRoleModulePermissions ( RoleId, ModuleName, CanView, CanEdit, IsActive, UTCDa

我有一个代码可以插入一行100次。问题是,我的代码适用于SQLServer2008R2和2012,但不适用于2005年。我也需要让它在2005年起作用

这是我的密码:

DECLARE @ctr as INT = 1
WHILE @ctr < 128
BEGIN
INSERT INTO DftRoleModulePermissions (
    RoleId,
    ModuleName,
    CanView,
    CanEdit,
    IsActive,
    UTCDateCreated,
    UTCDateModified,
    StampUserName 
    )
VALUES (
    @ctr,
    'Schedules',
    1,
    1,
    1,
    GetUTCDate(),
    GetUTCDate(),
    ''
    )
SET @ctr += 1
END
将@ctr声明为INT=1
而@ctr<128
开始
插入到DftRoleModulePermissions中(
罗莱德,
模块名称,
坎维尤,
CanEdit,
我很活跃,
联合技术开发署,
UTCDateModified,
雄蕊名称
)
价值观(
@ctr,
"附表",,
1.
1.
1.
GetUTCDate(),
GetUTCDate(),
''
)
设置@ctr+=1
结束

更改变量声明:

DECLARE @ctr as INT;
set @ctr = 1;
循环结束时的计数器增量为:

Set @ctr = @ctr + 1

这段代码在2005年会给你任何错误吗?如果是:什么错误?必须声明标量变量@ctr,并且不能为局部变量指定默认值如果必须使代码适用于较低版本的软件,则在较高版本上开发是不负责任的。您为什么不在SQL server 2005上进行所有开发?对于
@ctr+=1
iirc(更改为
set@ctr=@ctr+1
)也一样,谢谢。我不知道在较低的版本中,你必须做所有像这样的贴花和作业。获得新知识!