Dicas
De DTI Wiki
Dicas para Packages
Agrupe os procedimentos e funções em packages. As packages devem ser criadas por uso e não por sistema.
- Agrupe procedimentos que são utilizados em conjunto e no mesmo momento.
- Não agrupe procedimentos que são utilizados em partes diferentes do sistema ou em momentos diferentes na operação do sistema.
- Procure separar também os procedimentos e funções que são utilizados na intranet dos que são utilizados por aplicações delphi.
- Se uma função ou procedimento for utilizado por vários outros, dentro ou fora de packages, é aconselhavel que ele não esteja incluído numa package.
- Não faça uma package para apenas uma função ou procedimento.
Dicas de operações com datas
Evite o uso de funções inadequadas para cálculo de datas (to_char, concatenações com strings, etc;), utilize funções próprias para este fim.
Abaixo alguns exemplos úteis.
How to get first day and last date of week, month, quarter and year in Oracle
- First day of current week(sunday)
select TRUNC(SYSDATE, 'Day') from dual; - First day of next week(sunday)
select TRUNC(SYSDATE+7 , 'Day') from dual;
- First day of previous week(sunday)
select TRUNC(SYSDATE-7 , 'Day') from dual;
- First day of current month
select TRUNC(SYSDATE , 'Month') from dual;
- First day of previous month
select TRUNC(TRUNC(SYSDATE , 'Month')-1 , 'Month') from dual;
- First day of next month
select TRUNC(LAST_DAY(SYSDATE)+1 , 'Month') from dual;
- First day of current year
select TRUNC(SYSDATE , 'Year') from dual;
- First day of previous year
select TRUNC(TRUNC(SYSDATE , 'Year')-1 , 'Year') from dual;
- First day of next year
select ADD_MONTHS(TRUNC(SYSDATE , 'Year'),12) from dual;
- First Day of Current quater
select TRUNC(SYSDATE , 'Q') from dual;
- First Day of Previous Quarter
select ADD_MONTHS(TRUNC(SYSDATE , 'Q'),-3) from dual;
- First Day of Next Quarter
select ADD_MONTHS(TRUNC(SYSDATE , 'Q'),3) from dual;
- Last day of current week(sunday)
select TRUNC(SYSDATE, 'Day')+6 from dual;
- Last day of next week(sunday)
select TRUNC(SYSDATE+7 , 'Day')+6 from dual;
- Last day of previous week(sunday)
select TRUNC(SYSDATE-7 , 'Day')+6 from dual;
- Last day of current month
select LAST_DAY(TRUNC(SYSDATE , 'Month')) from dual;
- Last day of previous month
select LAST_DAY(TRUNC(TRUNC(SYSDATE , 'Month')-1 , 'Month')) from dual;
- Last day of next month
select LAST_DAY(TRUNC(LAST_DAY(SYSDATE)+1 , 'Month')) from dual;
- Last day of current year
select LAST_DAY(ADD_MONTHS(TRUNC(SYSDATE , 'Year'),11)) from dual;
- Last day of previous year
select LAST_DAY(ADD_MONTHS(TRUNC(TRUNC(SYSDATE , 'Year')-1 , 'Year'),11)) from dual;
- Last day of next year
select LAST_DAY(ADD_MONTHS(TRUNC(TRUNC(SYSDATE , 'Year')-1 , 'Year'),-13)) from dual;
- Last Day of Current quater
select LAST_DAY(ADD_MONTHS(TRUNC(SYSDATE , 'Q'),2)) from dual;
- Last Day of Previous Quarter
select TRUNC(SYSDATE , 'Q')-1 from dual;
- Last Day of Next Quarter
select LAST_DAY(ADD_MONTHS(TRUNC(SYSDATE , 'Q'),5)) from dual;