[ОТВЕТИТЬ]
Опции темы
29.10.2006 04:55  
isi
Автоматическое изменение даты запрета редактирования документов, после запуска скрипта в Административном модуле можно назначить задание "Движение даты запрета". Кому надо, поправляйте, "SYSDATE-2" количество дней от текущей даты - выставляем какое надо значение.
99- это ID списка заданий (не самих заданий), перед запуском проверить, есть ли уже с таким номером, а то заменит


Код:
declare
  I             Number(10);
  X            Number(10);
  MySQL    varchar(1000);
 
begin


  MySQL := 'begin update supermag.sssysinfo set paramvalue = TO_CHAR(SYSDATE-2,''dd.mm.yyyy'') where paramname= ''ClosedPeriod''; Commit; end;';

   select count(*) into i from supermag.sscontrolfunctions
     where ID  = 99;
  If i = 0 Then
    insert into supermag.sscontrolfunctions (FNTYPE, ID, TITLE)
    values ('SS', 99, 'Движение даты запрета');
  end if;

 select count(*) into x from supermag.saschedule
  where supermag.saschedule.ID = 99;

  if x = 0 Then
    insert into supermag.saschedule (ID, WHAT)
      values (99, MySQL);
   else
    update supermag.saschedule set WHAT=MySQL where ID=99;
  end if;

end;
 
30.04.2013 08:35  
Ринат
Добрый день, актуальна ли эта информация на данный день(СМ+1.029.2 sp4 ORACLE_11G_v11.2.0.2_R2) ?
Если да то что собственно с этим делать, пробовал записать в скрипт и выполнить через sqlplus, но ничего не вышло....
 
30.04.2013 08:44  
OlegON
Не пробовал, поскольку предпочитаю это делать внешними средствами. В Optimizer-4 (функционал) это есть.
Если квалификация позволяет только в скрипт запихнуть, то рекомендую не делать этого.
Если есть желание разобраться - опиши подробнее, что значит "ничего не вышло". Еще раз подчеркну, что дописывать ID в таблицы супермага - плохая идея. Если, конечно, есть хоть малейшая вероятность, что версия будет обновляться.
 
30.04.2013 08:55  
whitewizard
Загонять всё в планировщик задач супермага - дело на любителя.
Мне хватало и в обычный виндовозный планировщик задачу добавить:

date_change.cmd
Код:
@echo off
echo ------------------------------- >> db_date.log
set nls_lang=american_america.cl8mswin1251
SET ORACLE_SID=DBCO
sqlplus.exe supermag/qqq@dbco @db_date.sql
echo Base %oracle_sid% %date% %time% >> db_date.log
db_date.sql
Код:
 
update sssysinfo set PARAMVALUE=TO_CHAR((sysdate-30),'dd.mm.yyyy') where PARAMNAME='ClosedPeriod';
commit;
exit;
 
"Спасибо" whitewizard от:
07.05.2013 07:57  
CrazyWolf
Поступили аналогично, только вместо батника в вызовом sqlplus свой экзешник написали :)
 
07.05.2013 08:18  
OlegON
Батник универсальнее и исходники не потеряешь :)
 
07.05.2013 10:54  
CrazyWolf
Цитата:
Сообщение от OlegON
Батник универсальнее и исходники не потеряешь :)
Там исходник на 20 строчек :)
Код:
using System;
using System.Data;
using System.Data.OracleClient;

namespace LC
{
    class Program
    {
        
        static void Main(string[] args)
        {
            if (args.GetLength(0) == 2)
            {
                string storeName = args[0];
                string packetName = args[1];
                string connString = string.Format("Data Source={0};User ID=supermag;Password = xxxxxx;Unicode=True", storeName);
                using (var conOra = new OracleConnection(connString))
                {
                    conOra.Open();
                    using (var cmd = new OracleCommand(packetName, conOra))
                    {
                        cmd.CommandType = CommandType.StoredProcedure;
                        try
                        {
                            cmd.ExecuteNonQuery();
                            Console.Write("Done \n");

                        }
                        catch (Exception ex)
                        {
                            Console.Write(ex.Message);
                        }
                        finally
                        {
                            conOra.Close();
                        }
                    }
                }
            }
            else
            {
                Console.Write("Wrong arguments\n");
                Console.Write("Use LC DBName OraclePacketName\n");
            }
        }
    }
}
 
17.05.2013 15:44  
Ринат
Цитата:
Сообщение от OlegON
что значит "ничего не вышло".
Происходил переход на другую строку с ожиданием ввода команды (путь к скрипту прописан был правильно и ";" стояла...)

Думаю я тоже воспользуюсь батником, большое спасибо!
 
17.05.2013 17:24  
OlegON
Цитата:
Сообщение от Ринат
Происходил переход на другую строку с ожиданием ввода команды (путь к скрипту прописан был правильно и ";" стояла...)
/
забыл, значит :)
 
17.05.2013 18:17  
bayan
Цитата:
BEGIN
DBMS_SCHEDULER.CREATE_JOB (
job_name => 'J_CLOSED_PERIOD',
job_type => 'PLSQL_BLOCK',
job_action => 'update sssysinfo set PARAMVALUE=TO_CHAR((sysdate-30),'dd.mm.yyyy') where PARAMNAME='ClosedPeriod'; commit;',
repeat_interval => 'freq=daily;byhour=06;byminute=0;bysecond=0',
enabled => TRUE
);
END;
/
Я бы в job засунул.
 
 
Опции темы



Часовой пояс GMT +3, время: 21:21.

Все в прочитанное - Календарь - RSS - - Карта - Вверх 👫 Яндекс.Метрика
Форум сделан на основе vBulletin®
Copyright ©2000 - 2016, Jelsoft Enterprises Ltd. Перевод: zCarot и OlegON
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.