我需要将下面的代码从sql转换为oracle SQL

问题描述 投票:0回答:1

我需要将以下代码从 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
          
oracle oracle11g oracle10g
1个回答
0
投票

在甲骨文中:

  • 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)。

© www.soinside.com 2019 - 2024. All rights reserved.