15.06.2010 18:04
John Doe
 
Чтобы не было вопросов :)

Код:
SQL> with monday as (select trunc(sysdate)+15-TO_NUMBER(TO_CHAR(trunc(sysdate), 'D')) "mon" from dual)
  2  select decode(mod(TO_NUMBER(TO_CHAR("mon", 'DD')),2),0,"mon"+7,"mon")from monday;

DECODE(M
--------
05.07.10
15.06.2010 18:06
vdm
 
Цитата:
deucel Где?

Эта ошибка - при подключении через клиента от reports 6i.
Он не понимает with.
15.06.2010 19:54
PavelGS
 
сделал пока что так, потом буду пробовать
Код:
CREATE OR REPLACE TRIGGER SUPERMAG.LMMATRIXCHANGE
BEFORE DELETE OR INSERT
ON SUPERMAG.SMASSORTMATRIX 
FOR EACH ROW
DECLARE
dayForZak  int;
i int;
DDATE date;
DTEMP date;
IVT int;
f boolean;
BEGIN
SELECT TO_NUMBER(VALUE) into dayForZak FROM SUPERMAG.LMCONFIG WHERE PARM='day_for_vvod';
DTEMP := TO_DATE('01.01.2010','DD.MM.YYYY');
IVT := 0;
f := false;

     FOR i in 1..366 loop
        if (weekd(DTEMP) = dayForZak) then     
            IVT := IVT + 1;
        end if;
            
            if TO_CHAR(DTEMP,'DD.MM.YYYY') = TO_CHAR(sysdate,'DD.MM.YYYY') then
                f := true;
                end if;
        
                    
        if (weekd(DTEMP) = dayForZak) AND (IVT / 2 <> TRUNC (IVT / 2)) then
            if f = true then
               exit;
            end if;
        end if;  
                
            DTEMP := DTEMP + 1;
    end loop;

   
if inserting or updating then
INSERT INTO LMMATRIXACTIONS(ARTICLE,ACTIONDATE,OWNER,ACTION,MATRIXID,LOCATION,ZAKDATE) 
VALUES (:New.ARTICLE,SYSDATE,USER,'insert',:New.IDMATRIX,(SELECT STORELOC FROM SMASSORTMATRIXLOC WHERE IDMATRIX=:New.IDMATRIX),DTEMP);

else
INSERT INTO LMMATRIXACTIONS(ARTICLE,ACTIONDATE,OWNER,ACTION,MATRIXID,LOCATION) VALUES 
(:Old.ARTICLE,SYSDATE,USER,'delete',:Old.IDMATRIX,(SELECT STORELOC FROM SMASSORTMATRIXLOC WHERE IDMATRIX=:Old.IDMATRIX));
end if;   
END LMMATRIXCHANGE;
/
16.06.2010 11:50
deucel
 
Цитата:
vdm Он не понимает with.
Бывает, попробуй тогда так:

Код:
SELECT DAY
  FROM (SELECT     fromdate + LEVEL - 1 DAY
              FROM (SELECT TO_DATE ('01062010', 'DDMMYYYY') fromdate, TO_DATE ('01062010', 'DDMMYYYY') + 14 todate
                      FROM DUAL)
        CONNECT BY LEVEL <= todate - fromdate + 1)
 WHERE TO_CHAR (DAY, 'D') = 1 AND TO_NUMBER (TO_CHAR (DAY, 'DD')) / 2 != TRUNC (TO_NUMBER (TO_CHAR (DAY, 'DD')) / 2)
--AND ROWNUM = 1
Часовой пояс GMT +3, время: 18:58.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.