我需要将以下代码从 SQL Server 转换为 Oracle:
Update A
Set
A.ShiftName=@ShiftName,
A.ShiftStartTime=DATEADD(day,DATEDIFF(day,0,AttendanceDate),
CAST(S.ShiftStartTime as varchar(8))),
A.ShiftEndTime=DATEADD(day,DATEDIFF(day,case when @ShiftName='NIGHT' then -1 else 0 end ,
AttendanceDate),CAST(S.ShiftEndTime as varchar(8))),
A.ModifiedBy=@UpdatedBy,
A.ModifiedOn=GETDATE()
from Attendance A left join ShiftMaster S on S.[Shift]=@ShiftName
where AttendanceId=@AttendanceId
在甲骨文中:
DATEADD(day, ...)
应使用 +
运算符实现DATEDIFF
应使用 -
运算符实现。[identifier]
不是有效的语法,如果区分大小写,则应使用 "identifier"
;如果不区分大小写,则应使用 identifier
。@named_bind_variable
应该是 :named_bind_variable
。CAST
将值转换为字符串并尝试将字符串添加到日期,因为您没有告诉我们列保存的数据,但这看起来是错误的。这应该足以让您修复自己的代码。
您确实不想要将代码转换为 PL/SQL,因为 PL/SQL 是 Oracle 的过程语言。您想要将其转换为 Oracle 的 SQL 方言(并且要求将其从 SQL 转换为 Oracle SQL 毫无意义,您可能的意思是从 SQL Server SQL 转换为 Oracle SQL)。