Estou com um problema na construção de uma Procedure e preciso da ajuda de vocês.
Existe uma regra na qual dependendo da condição eu devo preencher uma variavel com a data correspondente à segunda-feira da semana ou completar com a data do dia.
Meu problema está em como faço esse tipo de atribuição...
DECLARE
vdata DATE := TRUNC(sysdate);
BEGIN
IF TO_CHAR(vdata,'D')='1'
THEN
dbms_output.put_line('Hoje é DOMINGO ');
ELSIF TO_CHAR(vdata,'D')='2'
THEN
dbms_output.put_line('Hoje é Segunda-Feira ');
ELSIF TO_CHAR(vdata,'D')='3'
THEN
dbms_output.put_line('Hoje é Terça-Feira ');
ELSIF TO_CHAR(vdata,'D')='4'
THEN
dbms_output.put_line('Hoje é Quarta-Feira ');
ELSIF TO_CHAR(vdata,'D')='5'
THEN
dbms_output.put_line('Hoje é Quinta-Feira ');
ELSIF TO_CHAR(vdata,'D')='6'
THEN
dbms_output.put_line('Hoje é Sexta-Feira ');
ELSIF TO_CHAR(vdata,'D')='7'
THEN
dbms_output.put_line('Hoje é Sábado');
END IF;
END;
select decode( condicao
, 'true' , trunc(sysdate, 'D') + 1 -- Segunda-Feira da semana atual
, trunc(sysdate) -- Dia de hoje
) data
from
(
select 'true' condicao from dual union all
select 'false' condicao from dual
);
V_DATA := TO_CHAR(SYSDATE, 'D');
CASE V_DATA
WHEN '1' THEN V_DATA := TO_CHAR(SYSDATE-6, 'DDMMYYYY');
--WHEN '2' THEN V_DATA := TO_CHAR(SYSDATE, 'DDMMYYYY');
WHEN '3' THEN V_DATA := TO_CHAR(SYSDATE-1, 'DDMMYYYY');
WHEN '4' THEN V_DATA := TO_CHAR(SYSDATE-2, 'DDMMYYYY');
WHEN '5' THEN V_DATA := TO_CHAR(SYSDATE-3, 'DDMMYYYY');
WHEN '6' THEN V_DATA := TO_CHAR(SYSDATE-4, 'DDMMYYYY');
WHEN '7' THEN V_DATA := TO_CHAR(SYSDATE-5, 'DDMMYYYY');
END CASE;
IF (P_TIPO_RELAT = 'D') THEN
V_DT_INI_PERIODO := LPAD(0,8,0); -->DEIXA DATA ZERADA
V_DT_FIM_PERIODO := LPAD(0,8,0); -->DEIXA DATA ZERADA
ELSE
NULL;
V_DT_INI_PERIODO := V_DATA;
V_DT_FIM_PERIODO := TO_CHAR(SYSDATE,'DDMMYYYY');
END IF;