我有一项任务是获取一些在SQL Server 2012上正常运行的代码,以便在SQL Server 2008 R2上运行。我收到了这个错误:
其他信息:'<'
附近的语法不正确
当我尝试运行我的代码时,我发现在我的SQL代码行中出现了问题
ALTER TABLE [dbo].[WorkTimeEntries]
ADD [TimeFinishedForRuntime] AS ISNULL([TimeFinished],
IIF ([TimeStarted] < SYSUTCDATETIME(), [dbo].[udf_GetCurrentDateTimeOffsetInTimeZone](DATENAME(TZOFFSET, [TimeStarted])), [TimeStarted]));
我已经读过,在这种情况下,当人们试图获取约会时会发生某种错误,但我不确定在我的情况下出了什么问题。
答案 0 :(得分:5)
SQL Server 2008R2中没有IIF
。
将其替换为CASE
ALTER TABLE [dbo].[WorkTimeEntries] ADD [TimeFinishedForRuntime] AS ISNULL(
[TimeFinished],
CASE WHEN [TimeStarted] < SYSUTCDATETIME() THEN [dbo].[udf_GetCurrentDateTimeOffsetInTimeZone](DATENAME(TZOFFSET, [TimeStarted])) ELSE [TimeStarted] END);
答案 1 :(得分:0)
基本上,如果您在SQL代码中遇到任何语法错误,就会发生此错误。请重新验证所有语句顺序。