Обновить более одной строки в Oracle - PullRequest
1 голос
/ 16 февраля 2011

Я хочу обновить табличные значения, используя жестко закодированные значения. Вот мой код:

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 ]

4 голосов
/ 16 февраля 2011
   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');

Должен ли ты.Отредактировал предложение IN с различными идентификаторами сотрудников, поскольку ваши идентичные.

2 голосов
/ 16 февраля 2011
 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_id? Если это числовой тип, избавьтесь от одинарных кавычек для литералов (числовые литералы не должны заключаться в кавычки). Они будут препятствовать использованию индекса для этого столбца!

0 голосов
/ 16 февраля 2011

Начало UPDATE emp_table SET expiry_dt = TO_DATE ('21 .09.2009: 00: 00: 01 ',' DD.MM.YYYY: HH24: MI: SS '), - почему вы используете здесь', '?? ГДЕ emp_id = '78629160';

Начало
UPDATE emp_table SET expiry_dt = TO_DATE ('21 .09.2009: 00: 00: 01 ',' ДД.ММ.ГГГГ: ЧЧ24: МИ: СС ') ГДЕ emp_id = '78629160'; конец;

Он работает на моей машине без каких-либо ошибок и проблем .. и дает ожидаемый результат также .. попробуйте еще раз, не используя «,».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...