Оператор SQL работает в одной базе данных MSSQL, но выдает синтаксическую ошибку в другой. - PullRequest
1 голос
/ 26 февраля 2011

Я изменяю хранимую процедуру.Когда я делаю изменение, оно отлично работает в моей базе данных DEV.Однако, когда я пытаюсь изменить хранимую процедуру в другой базе данных (QA), я получаю синтаксическую ошибку.Оператор в хранимой процедуре, который вызывает ошибку, выглядит следующим образом:

UPDATE #tmpPeriod 
SET statusDesc = 
    CASE 
        WHEN
            (SELECT count(*) 
            FROM [dbo].[vw_TeamIncentiveStatus] with (nolock) 
            WHERE 
                [periodEndDate] = #tmpPeriod.periodEndDateF 
                and teamID in (Select teamID From dbo.GetTeamsWithActiveMembers(#tmpPeriod.periodEndDateF)))
            = 
            (SELECT COUNT(*) FROM teamIncentivestatus WHERE periodID = #tmpPeriod.periodID AND status =1)
    THEN 'OPEN - All teams approved.' 
    ELSE
        #tmpPeriod.statusDesc
    END
WHERE statusDesc <> 'OPEN - No productivity.'

Сообщение об ошибке: «Неверный синтаксис рядом с«. »» И появляется в строке 9 фрагмента выше.

Я убедился, что представление vw_TeamIncentiveStatus и функция GetTeamsWithActiveMembers находятся в обеих базах данных и идентичны.

Любая помощь в том, почему я получаю синтаксическую ошибку в одной БД, но не в другой, будет принята с благодарностью.

1 Ответ

0 голосов
/ 26 февраля 2011

Строка 9 в вашем опубликованном коде содержит

dbo.GetTeamsWithActiveMembers(#tmpPeriod.periodEndDateF)

Возможность ссылаться на столбцы в вызовах TVF не была введена до SQL Server 2005 (в него входил оператор APPLY).Ваши две базы данных имеют разные режимы совместимости?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...