Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Oracle > Обновление данных в талице


Автор: WaxMuDb 10.11.2006, 17:49
Мой вопрос:
--------------------------------------------------------------

В таблице PLATEGI 3 столбца ID,Mem_Id,Status....
как сделать чтобы 1-го числа в 00:00:00 каждого месяца значение в столбце Status изменялось автоматически с "Оплатил" на "Не оплатил"?

Автор: LSD 10.11.2006, 17:59
Написать JOB который будет запускаться 1-го числа каждого месяца и делать UPDATE.

Автор: Rodman 10.11.2006, 18:36
Цитата(LSD @  10.11.2006,  17:59 Найти цитируемый пост)
UPDATE

при каждом обращении к этой таблице проверять и обновлять если надо...

Автор: LSD 10.11.2006, 18:44
Цитата(Rodman @  10.11.2006,  18:36 Найти цитируемый пост)
при каждом обращении к этой таблице проверять и обновлять если надо...

Если таблица большая и запросы к ней идут часто, то будет неоправдано большая нагрузка на сервер.

Автор: WaxMuDb 13.11.2006, 17:21
Что такое JOB? И как его написать?

Автор: 3x3 13.11.2006, 18:20
Цитата(WaxMuDb @ 13.11.2006,  17:21)
Что такое JOB? И как его написать?

http://www.google.ie/search?hl=en&q=dbms_job+oracle+&btnG=Search&meta=

Автор: WaxMuDb 13.11.2006, 18:43
Чет совсем догнать не могу...так понял чуток...как мне в моем случаее Job написать???

Автор: 3x3 13.11.2006, 20:02
Цитата(WaxMuDb @ 13.11.2006,  18:43)
Чет совсем догнать не могу...так понял чуток...как мне в моем случаее Job написать???

Job - это обычная хранимая процедура, а за её вызов по расписанию отвечает пакет dbms_job.
Надо написать процедуру, которая 
Цитата
значение в столбце Status изменяет с "Оплатил" на "Не оплатил"

И сказать DBMS_JOB'у 
Цитата
 чтобы 1-го числа в 00:00:00 каждого месяца
 он эту процедуру запускал.

PS
После этого, правда, придут ругаться кастомеры, которые предоплатили сервис на несколько месяцев вперёд.. 

Автор: Paradox 14.11.2006, 07:55

Цитата

Чет совсем догнать не могу...так понял чуток...как мне в моем случаее Job написать??? 

вот так примерно
Код

DECLARE
  X NUMBER;
BEGIN
  SYS.DBMS_JOB.SUBMIT
    ( job       => X 
     ,what      => 'BEGIN
UPDATE PLATEGI3 SET Status=''Не оплатил'';
COMMIT;
END;'
     ,next_date => TO_DATE('14.11.2006 10:58:19','dd/mm/yyyy hh24:mi:ss')
     ,INTERVAL  => 'TRUNC(LAST_DAY(SYSDATE)) + 1'
     ,no_parse  => TRUE
    );
  SYS.DBMS_OUTPUT.PUT_LINE('Job Number is: ' || TO_CHAR(x));
END;
/

COMMIT;



Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)