在oracle中更新多行

时间:2011-02-16 11:48:42

标签: 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:SS'),
   WHERE emp_id = '78629160';

END

我想在单个更新语句中执行此操作。谁能告诉我解决方案?

3 个答案:

答案 0 :(得分:4)

   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子句,因为它们是相同的。

答案 1 :(得分:2)

 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的事实只是一个复制和粘贴错误,就像两个日期相同的事实一样。

顺便说一句:什么数据类型是emp_id?如果这是一个数字类型,请删除文字的单引号(不应引用数字文字)。它们会阻止在该列上使用索引!

答案 2 :(得分:0)

开始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'; 端;

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