我想通过使用硬编码值来更新表值。我的代码是:
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
我想在单个更新语句中执行此操作。谁能告诉我解决方案?
答案 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';
端;
它在我的机器上运行,没有任何错误和问题..也给出了预期的结果.. 再试一次,不要使用','。