我正在改变存储过程。当我进行更改时,它在我的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函数在两个数据库中都是相同的。
有关为什么我在一个数据库上获得语法错误而不是另一个数据库的语法错误的任何帮助将不胜感激。
答案 0 :(得分:0)
您发布的代码中的第9行包含
dbo.GetTeamsWithActiveMembers(#tmpPeriod.periodEndDateF)
直到SQL Server 2005(随APPLY
运算符一起提供)才引入了在TVF调用中引用列的功能。您的两个数据库是否具有不同的兼容模式?