CREATE OR REPLACE PROCEDURE
SQ_PROC_CURSORES (p_acao char) AS
V_EVENTO_MESTRE CHAR(1) := 'N';
v_ano
VARCHAR2(4);
CURSOR
creby IS (SELECT
CD_EVENTO, CD_MESTRE
FROM
BIG_OUTAGE
WHERE
EXTRACT(YEAR FROM
DT_PROCESSAMENTO) = v_ano
AND
EXTRACT(MONTH FROM
DT_PROCESSAMENTO) IN (10, 11));
CURSOR
krebe IS (SELECT
CD_EVENTO, CD_MESTRE
FROM
BIG_OUTAGE
WHERE
EXTRACT(YEAR FROM
DT_PROCESSAMENTO) = v_ano
AND
EXTRACT(MONTH FROM
DT_PROCESSAMENTO) IN (10, 11));
reg_krebe krebe%ROWTYPE;
forca_erro EXCEPTION;
-- Criado para fazer a
mudança de linha ----
crlf varchar2(2) := chr(13) ||
chr(10);
--------------------------------------------
BEGIN
IF
p_acao = '1' THEN
FOR RS IN (SELECT
CD_EVENTO, CD_MESTRE
FROM
BIG_OUTAGE
WHERE /*CD_MESTRE
= V_EVENTO_MESTRE
AND*/
EXTRACT(YEAR FROM
DT_PROCESSAMENTO) = '2012'
AND
EXTRACT(MONTH FROM
DT_PROCESSAMENTO) IN (10, 11)) LOOP
DBMS_OUTPUT.PUT_LINE(RS.CD_EVENTO || ' -
' || RS.CD_MESTRE);
IF
RS.CD_EVENTO IN (2744055, 2744083, 2744061) THEN
UPDATE
SQ_TESTE SET
LOG_ERROS = RS.CD_EVENTO
WHERE
CD_EVENTO = RS.CD_EVENTO;
END IF;
END LOOP;
ELSIF
p_acao = 2 THEN
v_ano := 2012;
FOR
reg_creby IN
creby LOOP
IF
reg_creby.CD_EVENTO IN (2744055, 2744083, 2744061) THEN
UPDATE
SQ_TESTE SET
LOG_ERROS = 'cursor 2'
WHERE
CD_EVENTO =reg_creby.CD_EVENTO;
END IF;
END LOOP;
ELSIF
p_acao =3 THEN
v_ano := 2012;
OPEN
krebe;
LOOP
FETCH
krebe INTO
reg_krebe;
EXIT WHEN
krebe%NOTFOUND;
IF
reg_krebe.CD_EVENTO IN (2744055, 2744083, 2744061) THEN
UPDATE
SQ_TESTE SET
LOG_ERROS = 'cursor 2'
WHERE
CD_EVENTO =reg_krebe.CD_EVENTO;
END IF;
END LOOP;
ELSIF
p_acao = 4 THEN
v_ano := 2012;
OPEN
krebe;
LOOP
FETCH
krebe INTO
reg_krebe;
EXIT WHEN
krebe%NOTFOUND;
IF
reg_krebe.CD_EVENTO = 2744055 THEN
RAISE
forca_erro;
END IF;
END LOOP;
END IF;
EXCEPTION
WHEN
forca_erro THEN
RAISE_application_error (-20004,'Krebynhu
- encontrado o evento ' ||
reg_krebe.CD_EVENTO
|| crlf ||
'------------------------------------------------' ||
crlf ||
'Código do erro: ' || SQLCODE || crlf ||
'Descrição do erro: ' || SQLERRM || crlf ||
'------------------------------------------------' ||
crlf );
END;
|