2013-05-15 2 views
0

У меня есть код, который вставляет строку 100 раз. Проблема в том, что мой код работает на SQL Server 2008 R2 и 2012, но не в 2005 году. Мне нужно, чтобы он работал с 2005 годом.Кодовые конфликты на разных версиях SQL Server

Вот мой код:

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 
+3

Придает ли этот код вам какие-либо ошибки на 2005 ? Если да: *** какие *** ошибки? –

+0

Должен объявить скалярную переменную @ctr и не может присвоить значение по умолчанию локальной переменной – ljpv14

+1

Если вы должны сделать работу с кодом для более низкой версии программного обеспечения, безответственно разработать более высокую версию. Почему вы не сделали все свое devlopement на SQL Server 2005? – HLGEM

ответ

7

Изменить объявление переменной:

DECLARE @ctr as INT; 
set @ctr = 1; 

и счетчик прибавка в конце цикла к:

Set @ctr = @ctr + 1 
+0

Ditto для '@ctr + = 1' iirc (изменение на' set @ctr = @ctr + 1') –

+0

Это, скорее всего, единственная ошибка. – Serge

+0

Спасибо. Я не знал, что в более низких версиях вы должны делать все декальвации и присвоения, подобные этому. Новые знания! – ljpv14

Смежные вопросы