Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.12.2013, 17:34   #1
dima1257
Пользователь
 
Аватар для dima1257
 
Регистрация: 16.11.2012
Сообщений: 66
По умолчанию Джоб(Задания). Необходимо создание самого простого job для образца

Добрый вечер.

Хочется освоить job'ы, но нигде не могу найти пример от начала до конца.

вот допустим есть процедура:
Код:
CREATE OR REPLACE PROCEDURE my_pro_2
(ch IN INTEGER)
IS
BEGIN
UPDATE my_test SET cnt = cnt + 1
WHERE num = '1';
END;
Скажите пожалуйста что необходимо что бы эта процедура запускалась например каждые 5 минут.
Выдержка из правил форума: Не стоит отправлять в поиск, не хотите отвечать пройдите мимо. Хотите помочь, пишите конкретный ответ.
dima1257 вне форума Ответить с цитированием
Старый 11.12.2013, 19:10   #2
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

делаете джоб дизайнером, потом генирите скрипт и разбираетесь
eval вне форума Ответить с цитированием
Старый 11.12.2013, 23:35   #3
dima1257
Пользователь
 
Аватар для dima1257
 
Регистрация: 16.11.2012
Сообщений: 66
По умолчанию

Цитата:
Сообщение от eval Посмотреть сообщение
делаете джоб дизайнером, потом генирите скрипт и разбираетесь
это тоже самое что если я сейчас чей нибудь скрипт возьму и буду разбирать, но я не понимаю как и что происходит.

дайте кто нибудь sql команды пожалуйста. и если не сложно, то прокомментируйте в пару предложений.
Выдержка из правил форума: Не стоит отправлять в поиск, не хотите отвечать пройдите мимо. Хотите помочь, пишите конкретный ответ.
dima1257 вне форума Ответить с цитированием
Старый 12.12.2013, 01:08   #4
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

в скрипте и будут команды, а далее все в справке описано, что вам еще надо не понятно
eval вне форума Ответить с цитированием
Старый 12.12.2013, 12:22   #5
dima1257
Пользователь
 
Аватар для dima1257
 
Регистрация: 16.11.2012
Сообщений: 66
По умолчанию

Подправил процедуру:

Код:
CREATE OR REPLACE PROCEDURE my_pro_2

IS
BEGIN
UPDATE orders SET item = TO_CHAR(SYSDATE, 'HH24:MI:SS')
WHERE num = '1';
END;
И нашел вот такой пример

Код:
EGIN
  sys.dbms_job.submit(job => :job,
                      what => 'begin  my_pro_2; end;',       
                      next_date => to_date('12-12-2013 06:00:00', 'dd-mm-yyyy hh24:mi:ss'),
                      INTERVAL => 'trunc(sysdate + 1) + 6/24');
  commit;
END;
но получаю ошибку(пишу в sql navigator):
12:13:03 ORA-06502: PL/SQL: numeric or value error: character string buffer too small
12:13:03 ORA-06512: at line 2


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

Последний раз редактировалось dima1257; 12.12.2013 в 12:26.
dima1257 вне форума Ответить с цитированием
Старый 12.12.2013, 13:00   #6
dima1257
Пользователь
 
Аватар для dima1257
 
Регистрация: 16.11.2012
Сообщений: 66
По умолчанию

Мне помогли и я разобрался.

создаем таблицу.
Код:
CREATE TABLE orders
        (
                num  INTEGER NOT NULL PRIMARY KEY ,
                item CHAR(50) NOT NULL
        );
вставим одну запись в созданную таблицу.
Код:
INSERT INTO orders
        ( num , item
        ) VALUES
        ( '1', '0'
        );
создаем процедуру.
Код:
CREATE OR REPLACE PROCEDURE my_pro_2
IS
BEGIN
UPDATE orders SET item = TO_CHAR(SYSDATE, 'HH24:MI:SS')
WHERE num = '1';
END;
создаем конкретно уже задание(job)
Код:
declare v_job number;
BEGIN
  sys.dbms_job.submit(job => v_job,
                      what => 'begin  my_pro_2; end;',   -- здесь имя  вызываемой процедуры.
                      next_date => to_date('12-12-2013 12:45:00', 

'dd-mm-yyyy hh24:mi:ss'),
                      INTERVAL => 'trunc(sysdate + 1) + 6/24');
  commit;
END;
Выдержка из правил форума: Не стоит отправлять в поиск, не хотите отвечать пройдите мимо. Хотите помочь, пишите конкретный ответ.
dima1257 вне форума Ответить с цитированием
Старый 14.12.2013, 16:50   #7
Vapaamies
Ваш К. О.
Участник клуба
 
Аватар для Vapaamies
 
Регистрация: 26.12.2012
Сообщений: 1,774
По умолчанию

DBMS_Job вроде считается устаревшей, и Oracle грозится прекратить его поддержку в будущих версиях. Советует переходить на DBMS_Schedule. Пример у меня где-то был, с прошлой работы остался...
Vapaamies вне форума Ответить с цитированием
Старый 18.12.2013, 23:14   #8
dima1257
Пользователь
 
Аватар для dima1257
 
Регистрация: 16.11.2012
Сообщений: 66
По умолчанию

кстати да. все говорят про шедулер.
Выдержка из правил форума: Не стоит отправлять в поиск, не хотите отвечать пройдите мимо. Хотите помочь, пишите конкретный ответ.
dima1257 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подпрограмма нахождения самого длинного простого пути от заданной вершины (язык Си) Dmell Помощь студентам 1 02.05.2012 10:07
Создание простого дома Mr.Drayzy Операционные системы общие вопросы 7 21.06.2010 14:50
3 задания необходимо реализовать на Паскале Gigatrest Помощь студентам 4 17.11.2009 20:27
необходимо решить задания Жека2110 Фриланс 2 10.02.2008 20:18