Sql 在oracle中更新多行

Sql 在oracle中更新多行,sql,oracle,plsql,Sql,Oracle,Plsql,我想使用硬编码值更新表值。以下是我的代码: BEGIN UPDATE emp_table SET expiry_dt = TO_DATE('21.09.2009:00:00:01','DD.MM.YYYY:HH24:MI:SS'), WHERE emp_id = '78629160'; UPDATE emp_table SET expiry_dt = TO_DATE('21.09.2009:00:00:01','DD.MM.YYYY:HH24:MI:

我想使用硬编码值更新表值。以下是我的代码:

BEGIN

  UPDATE emp_table  
     SET expiry_dt = TO_DATE('21.09.2009:00:00:01','DD.MM.YYYY:HH24:MI:SS'),
   WHERE emp_id = '78629160';

  UPDATE emp_table  
     SET expiry_dt = TO_DATE('21.09.2009:00:00:01','DD.MM.YYYY:HH24:MI:SS'),
   WHERE emp_id = '78629160';

END
我想在单个update语句中完成它。谁能告诉我解决办法吗

   UPDATE emp_table  SET expiry_dt = TO_DATE 
   ('21.09.2009:00:00:01','DD.MM.YYYY:HH24:MI:SS'),
    WHERE emp_id IN ('78629160','111020102','88888888');
我应该帮你。使用不同的员工id编辑IN子句,因为您的id相同

UPDATE emp_table SET expiry_dt = CASE WHEN emp_id = '78629160' THEN TO_DATE('21.09.2009:00:00:01','DD.MM.YYYY:HH24:MI:SS') WHEN emp_id = '78629161' THEN TO_DATE('21.10.2009:00:00:01','DD.MM.YYYY:HH24:MI:SS') END WHERE emp_id IN ('78629160', '78629161') 我应该帮你。使用不同的员工id编辑IN子句,因为您的id相同

UPDATE emp_table SET expiry_dt = CASE WHEN emp_id = '78629160' THEN TO_DATE('21.09.2009:00:00:01','DD.MM.YYYY:HH24:MI:SS') WHEN emp_id = '78629161' THEN TO_DATE('21.10.2009:00:00:01','DD.MM.YYYY:HH24:MI:SS') END WHERE emp_id IN ('78629160', '78629161') 更新emp_表 设置到期日_dt= 案例 当emp_id='78629160'时,则截止日期('21.09.2009:00:00:01','DD.MM.YYYY:HH24:MI:SS') 当emp_id='78629161'时,则截止日期('21.10.2009:00:00:01','DD.MM.YYYY:HH24:MI:SS') 终止 其中emp_id位于('78629160'、'78629161') 我假设您有两次相同的ID只是一个复制粘贴错误,就像两个日期相同一样

UPDATE emp_table SET expiry_dt = CASE WHEN emp_id = '78629160' THEN TO_DATE('21.09.2009:00:00:01','DD.MM.YYYY:HH24:MI:SS') WHEN emp_id = '78629161' THEN TO_DATE('21.10.2009:00:00:01','DD.MM.YYYY:HH24:MI:SS') END WHERE emp_id IN ('78629160', '78629161') 顺便问一下:什么数据类型是
emp\u id
?如果是数值类型,请去掉文字的单引号(不应引用数值文字)。它们将阻止在该列上使用索引

更新emp_表 设置到期日_dt= 案例 当emp_id='78629160'时,则截止日期('21.09.2009:00:00:01','DD.MM.YYYY:HH24:MI:SS') 当emp_id='78629161'时,则截止日期('21.10.2009:00:00:01','DD.MM.YYYY:HH24:MI:SS') 终止 其中emp_id位于('78629160'、'78629161') 我假设您有两次相同的ID只是一个复制粘贴错误,就像两个日期相同一样

UPDATE emp_table SET expiry_dt = CASE WHEN emp_id = '78629160' THEN TO_DATE('21.09.2009:00:00:01','DD.MM.YYYY:HH24:MI:SS') WHEN emp_id = '78629161' THEN TO_DATE('21.10.2009:00:00:01','DD.MM.YYYY:HH24:MI:SS') END WHERE emp_id IN ('78629160', '78629161')
顺便问一下:什么数据类型是
emp\u id
?如果是数值类型,请去掉文字的单引号(不应引用数值文字)。它们将阻止在该列上使用索引

开始更新emp\u表集到期日\u dt=TO\u日期('21.09.2009:00:00:01','DD.MM.YYYY:HH24:MI:SS'),--为什么在此处使用'?? 其中emp_id='78629160'

开始
将emp表格集到期日期更新为日期('21.09.2009:00:00:01','DD.MM.YYYY:HH24:MI:SS') 其中emp_id='78629160'; 结束

它在我的机器上运行,没有任何错误和问题。。并给出了预期的结果。。
请不要使用“,”再试一次

开始更新emp\u表集到期日\u dt=TO\u日期('21.09.2009:00:00:01','DD.MM.YYYY:HH24:MI:SS'),--为什么在此处使用'?? 其中emp_id='78629160'

开始
将emp表格集到期日期更新为日期('21.09.2009:00:00:01','DD.MM.YYYY:HH24:MI:SS') 其中emp_id='78629160'; 结束

它在我的机器上运行,没有任何错误和问题。。并给出了预期的结果。。
请不要使用“,”再试一次

你能澄清一下吗?您是要为单个emp_id更新多列,还是为多个emp_id更新单列?在您的示例中,UPDATE语句是相同的。我不明白-为什么要以相同的方式更新同一行两次?@nonnb,以便它保持更新,当然:)您能澄清一下吗?您是要为单个emp_id更新多列,还是为多个emp_id更新单列?在您的示例中,UPDATE语句是相同的。我不明白-为什么要以相同的方式更新同一行两次?@nonnb,以便它保持更新,当然:)为什么您建议使用CASE语句?我对这个问题的解释是OP希望在一条语句中为每一行更新两行不同id的日期值。也许这种理解是错误的,为什么您建议使用CASE语句呢?我对这个问题的解释是,OP希望在一个语句中为每一行更新具有不同id的两行,使其具有不同的日期值。也许这种理解是错误的我怀疑他在update语句中编辑了多个列,忘记了省略逗号。我怀疑他在update语句中编辑了多个列,忘记了省略逗号。