Viva,
Necessito fazer um procedimento usando CURSORS para me ler vários campos de uma tabela, ver se o valor não é nulo ou 0 e nesse caso escrever para uma tabela todos esses valores diferentes de zero apenas para apenas uma nova coluna em uma outra tabela.
A minha duvida como leio várias colunas à procura desses valores diferentes de 0 ou nulo e depois escrevo apenas para uma coluna?
Melhores Cumprimentos,
André.
Cursor, como?
-
- Rank: Programador Sênior
- Mensagens: 49
- Registrado em: Seg, 13 Out 2008 9:01 am
- Localização: Lisboa
-
- Rank: Programador Sênior
- Mensagens: 49
- Registrado em: Seg, 13 Out 2008 9:01 am
- Localização: Lisboa
Viva,
É melhor mostrar o código.
Necessito de passar dois parametros num procedimento. O SEMESTRE, podendo este ser 1 ou 2 e o ANO, o ano vou passar em numero e depos converto para date com o TO_DATE, no entanto estou a ter algumas dificuldades, fruto da minha pouca experiencia em programação.
Primeiras dúvidas, porque é que esta igualidade não funciona?
Se o mesmo código em vez de levar um "=", levar um ">", ">=" ou outro termo de comparação já funciona.
Estou também a moer a cabeça no arranjar uma forma de passar 1 ou 2 no parametro pSEMESTRE e ele saber que para 1 estou a referir os meses entre Janeiro e Junho, e para 2 estou a referir os meses entre Julho e Dezembro.
É melhor mostrar o código.
Necessito de passar dois parametros num procedimento. O SEMESTRE, podendo este ser 1 ou 2 e o ANO, o ano vou passar em numero e depos converto para date com o TO_DATE, no entanto estou a ter algumas dificuldades, fruto da minha pouca experiencia em programação.
create or replace procedure M4PR_LIST_TRAB_EXTRA
(
pSEMESTRE NUMBER,
pANO NUMBER
)
is
CURSOR RUB_TRAB_EXTRA IS
SELECT
m4t_acumulado_rl.id_empregad,
m4t_empregad.nome,
sum(m4t_acumulado_rl.N_HE_DDU_50_N41),
sum(m4t_acumulado_rl.N_HE_DDU_75_N41),
sum(m4t_acumulado_rl.NHE_DDO_100_N41),
sum(m4t_acumulado_rl.NHE_DCF_100_N41),
sum(m4t_acumulado_rl1.NHE_F_100_N1),
sum(m4t_acumulado_rl.N_HE_DDU_50_N42),
sum(m4t_acumulado_rl.N_HE_DDU_75_N42),
sum(m4t_acumulado_rl.NHE_DDO_100_N42),
sum(m4t_acumulado_rl.NHE_DCF_100_N42),
sum(m4t_acumulado_rl1.NHE_F_100_N2)
FROM m4t_acumulado_rl, m4t_acumulado_rl1, m4t_empregad
where
m4t_acumulado_rl.id_sociedad = m4t_acumulado_rl1.id_sociedad
and
m4t_acumulado_rl.id_empregad = m4t_acumulado_rl1.id_empregad
and
m4t_acumulado_rl.dat_ini_act_emp = m4t_acumulado_rl1.dat_ini_act_emp
and
m4t_acumulado_rl.data_imputacao = m4t_acumulado_rl1.data_imputacao
and
m4t_acumulado_rl.dat_pagm = m4t_acumulado_rl1.dat_pagm
and
m4t_acumulado_rl.id_empregad = m4t_empregad.id_empregad
and
(m4t_acumulado_rl.N_HE_DDU_50_N41 > 0 or
m4t_acumulado_rl.N_HE_DDU_50_N41 > 0 or
m4t_acumulado_rl.N_HE_DDU_75_N41 > 0 or
m4t_acumulado_rl.NHE_DDO_100_N41 > 0 or
m4t_acumulado_rl.NHE_DCF_100_N41 > 0 or
m4t_acumulado_rl1.NHE_F_100_N1 > 0 or
m4t_acumulado_rl.N_HE_DDU_50_N42 > 0 or
m4t_acumulado_rl.N_HE_DDU_75_N42 > 0 or
m4t_acumulado_rl.NHE_DDO_100_N42 > 0 or
m4t_acumulado_rl.NHE_DCF_100_N42 > 0 or
m4t_acumulado_rl1.NHE_F_100_N2 > 0)
and
m4t_acumulado_rl.dat_pagm = TO_DATE(pANO,'YY')
.
.
.
GROUP BY
m4t_acumulado_rl.id_empregad, m4t_empregad.nome
order by m4t_empregad.nome
m4t_acumulado_rl.dat_pagm = TO_DATE(pANO,'YY')
Estou também a moer a cabeça no arranjar uma forma de passar 1 ou 2 no parametro pSEMESTRE e ele saber que para 1 estou a referir os meses entre Janeiro e Junho, e para 2 estou a referir os meses entre Julho e Dezembro.
-
- Rank: Programador Sênior
- Mensagens: 49
- Registrado em: Seg, 13 Out 2008 9:01 am
- Localização: Lisboa
Viva,
Já tenho o procedimento a correr, no entanto estou com alguns problemas...
O procedimento:
Questão: Como consigo meter esta igualdade a funcionar?
Sei que esta igualdade não funciona, que caminho posso seguir para contornar isto?
Cumprimentos.
Já tenho o procedimento a correr, no entanto estou com alguns problemas...
O procedimento:
create or replace procedure M4PR_LIST_TRAB_EXTRA
(
pSEMESTRE NUMBER,
pANO NUMBER
)
is
CURSOR RUB_TRAB_EXTRA IS
SELECT
m4t_acumulado_rl.id_empregad,
m4t_empregad.nome,
sum(m4t_acumulado_rl.N_HE_DDU_50_N41),
sum(m4t_acumulado_rl.N_HE_DDU_75_N41),
sum(m4t_acumulado_rl.NHE_DDO_100_N41),
sum(m4t_acumulado_rl.NHE_DCF_100_N41),
sum(m4t_acumulado_rl1.NHE_F_100_N1),
sum(m4t_acumulado_rl.N_HE_DDU_50_N42),
sum(m4t_acumulado_rl.N_HE_DDU_75_N42),
sum(m4t_acumulado_rl.NHE_DDO_100_N42),
sum(m4t_acumulado_rl.NHE_DCF_100_N42),
sum(m4t_acumulado_rl1.NHE_F_100_N2)
FROM m4t_acumulado_rl, m4t_acumulado_rl1, m4t_empregad
where
m4t_acumulado_rl.id_sociedad = m4t_acumulado_rl1.id_sociedad
and
m4t_acumulado_rl.id_empregad = m4t_acumulado_rl1.id_empregad
and
m4t_acumulado_rl.dat_ini_act_emp = m4t_acumulado_rl1.dat_ini_act_emp
and
m4t_acumulado_rl.data_imputacao = m4t_acumulado_rl1.data_imputacao
and
m4t_acumulado_rl.dat_pagm = m4t_acumulado_rl1.dat_pagm
and
m4t_acumulado_rl.id_empregad = m4t_empregad.id_empregad
and
(m4t_acumulado_rl.N_HE_DDU_50_N41 > 0 or
m4t_acumulado_rl.N_HE_DDU_50_N41 > 0 or
m4t_acumulado_rl.N_HE_DDU_75_N41 > 0 or
m4t_acumulado_rl.NHE_DDO_100_N41 > 0 or
m4t_acumulado_rl.NHE_DCF_100_N41 > 0 or
m4t_acumulado_rl1.NHE_F_100_N1 > 0 or
m4t_acumulado_rl.N_HE_DDU_50_N42 > 0 or
m4t_acumulado_rl.N_HE_DDU_75_N42 > 0 or
m4t_acumulado_rl.NHE_DDO_100_N42 > 0 or
m4t_acumulado_rl.NHE_DCF_100_N42 > 0 or
m4t_acumulado_rl1.NHE_F_100_N2 > 0)
and
m4t_acumulado_rl.dat_pagm = TO_DATE(pANO,'YY')
/* m4t_acumulado_rl.dat_pagm > TO_DATE('2008','YY') funciona c este*/
GROUP BY
m4t_acumulado_rl.id_empregad, m4t_empregad.nome
order by m4t_empregad.nome;
vID_EMPREGAD m4t_acumulado_rl.id_empregad%TYPE;
vNOME m4t_empregad.nome%TYPE;
vN1_DDU_50 m4t_acumulado_rl.N_HE_DDU_50_N41%TYPE;
vN1_DDU_75 m4t_acumulado_rl.N_HE_DDU_75_N41%TYPE;
vN1_DD0_100 m4t_acumulado_rl.NHE_DDO_100_N41%TYPE;
vN1_DCF_100 m4t_acumulado_rl.NHE_DCF_100_N41%TYPE;
vN1_F_100 m4t_acumulado_rl1.NHE_F_100_N1%TYPE;
vN2_DDU_50 m4t_acumulado_rl.N_HE_DDU_50_N42%TYPE;
vN2_DDU_75 m4t_acumulado_rl.N_HE_DDU_75_N42%TYPE;
vN2_DDO_100 m4t_acumulado_rl.NHE_DDO_100_N42%TYPE;
vN2_DCF_100 m4t_acumulado_rl.NHE_DCF_100_N42%TYPE;
vN2_F_100 m4t_acumulado_rl1.NHE_F_100_N2%TYPE;
begin
OPEN RUB_TRAB_EXTRA;
LOOP
FETCH RUB_TRAB_EXTRA INTO vID_EMPREGAD, vNOME, vN1_DDU_50, vN1_DDU_75, vN1_DD0_100, vN1_DCF_100, vN1_F_100, vN2_DDU_50, vN2_DDU_75, vN2_DDO_100, vN2_DCF_100, vN2_F_100;
EXIT WHEN RUB_TRAB_EXTRA%NOTFOUND;
IF vID_EMPREGAD IS NOT NULL THEN
NULL; /* INSERT INTO ... */
END IF;
END LOOP;
CLOSE RUB_TRAB_EXTRA;
commit;
end;
Questão: Como consigo meter esta igualdade a funcionar?
m4t_acumulado_rl.dat_pagm = TO_DATE(pANO,'YY')
Cumprimentos.
-
- Moderador
- Mensagens: 2016
- Registrado em: Qua, 12 Jan 2005 3:25 pm
- Localização: Araraquara - SP
Abraço,
Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP
Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP
Brother,
Tentou com TO_CHAR em ambos?
Tentou com TO_CHAR em ambos?
to_char(m4t_acumulado_rl.dat_pagm,'YY') = TO_CHAR(pANO,'YY')
-
- Rank: Programador Sênior
- Mensagens: 49
- Registrado em: Seg, 13 Out 2008 9:01 am
- Localização: Lisboa
Viva,
Desde já muito obrigado pela resposta.
Com o TO_CHAR nos dois, devolve na mesma valores nulos, quando n deveria devolver.
Dei a volta assim:
O procedimento já está quase acabado, falta-me apenas saber como trabalhar com um intervalo usando apenas mês e dia.
O procedimento:
Falta-me agora saber como trabalhar com um intervalo de datas usando apenas dia e mês
onde está --dia25mesJaneiro-- e --dia25mesJunho-- necessito de colocar a data apenas com dia/mês, os dias e os meses serão sempre os mesmos, dia 25 do mês de Janeiro e dia 25 do mês de Junho. Como poderei fazer este IF?
Cumprimentos.
Desde já muito obrigado pela resposta.
Com o TO_CHAR nos dois, devolve na mesma valores nulos, quando n deveria devolver.
Dei a volta assim:
m4t_acumulado_rl.dat_pagm > TO_DATE(pANO,'YY')
AND
m4t_acumulado_rl.dat_pagm <= TO_DATE((pANO + 1),'YY')
O procedimento:
create or replace procedure M4PR_LIST_TRAB_EXTRA
(
pSEMESTRE NUMBER,
pANO NUMBER
)
is
CURSOR RUB_TRAB_EXTRA IS
SELECT
m4t_acumulado_rl.id_empregad,
m4t_empregad.nome,
sum(m4t_acumulado_rl.N_HE_DDU_50_N41),
sum(m4t_acumulado_rl.N_HE_DDU_75_N41),
sum(m4t_acumulado_rl.NHE_DDO_100_N41),
sum(m4t_acumulado_rl.NHE_DCF_100_N41),
sum(m4t_acumulado_rl1.NHE_F_100_N1),
sum(m4t_acumulado_rl.N_HE_DDU_50_N42),
sum(m4t_acumulado_rl.N_HE_DDU_75_N42),
sum(m4t_acumulado_rl.NHE_DDO_100_N42),
sum(m4t_acumulado_rl.NHE_DCF_100_N42),
sum(m4t_acumulado_rl1.NHE_F_100_N2)
FROM m4t_acumulado_rl, m4t_acumulado_rl1, m4t_empregad
where
m4t_acumulado_rl.id_sociedad = m4t_acumulado_rl1.id_sociedad
and
m4t_acumulado_rl.id_empregad = m4t_acumulado_rl1.id_empregad
and
m4t_acumulado_rl.dat_ini_act_emp = m4t_acumulado_rl1.dat_ini_act_emp
and
m4t_acumulado_rl.data_imputacao = m4t_acumulado_rl1.data_imputacao
and
m4t_acumulado_rl.dat_pagm = m4t_acumulado_rl1.dat_pagm
and
m4t_acumulado_rl.id_empregad = m4t_empregad.id_empregad
and
(m4t_acumulado_rl.N_HE_DDU_50_N41 > 0 or
m4t_acumulado_rl.N_HE_DDU_50_N41 > 0 or
m4t_acumulado_rl.N_HE_DDU_75_N41 > 0 or
m4t_acumulado_rl.NHE_DDO_100_N41 > 0 or
m4t_acumulado_rl.NHE_DCF_100_N41 > 0 or
m4t_acumulado_rl1.NHE_F_100_N1 > 0 or
m4t_acumulado_rl.N_HE_DDU_50_N42 > 0 or
m4t_acumulado_rl.N_HE_DDU_75_N42 > 0 or
m4t_acumulado_rl.NHE_DDO_100_N42 > 0 or
m4t_acumulado_rl.NHE_DCF_100_N42 > 0 or
m4t_acumulado_rl1.NHE_F_100_N2 > 0)
and
m4t_acumulado_rl.dat_pagm > TO_DATE(pANO,'YY')
AND
m4t_acumulado_rl.dat_pagm <= TO_DATE((pANO + 1),'YY') /* N CONSIGO FAZER: m4t_acumulado_rl.dat_pagm = TO_DATE(pANO,'YY') */
GROUP BY
m4t_acumulado_rl.id_empregad, m4t_empregad.nome
order by m4t_empregad.nome;
vID_EMPREGAD m4t_acumulado_rl.id_empregad%TYPE;
vNOME m4t_empregad.nome%TYPE;
vN1_DDU_50 m4t_acumulado_rl.N_HE_DDU_50_N41%TYPE;
vN1_DDU_75 m4t_acumulado_rl.N_HE_DDU_75_N41%TYPE;
vN1_DD0_100 m4t_acumulado_rl.NHE_DDO_100_N41%TYPE;
vN1_DCF_100 m4t_acumulado_rl.NHE_DCF_100_N41%TYPE;
vN1_F_100 m4t_acumulado_rl1.NHE_F_100_N1%TYPE;
vN2_DDU_50 m4t_acumulado_rl.N_HE_DDU_50_N42%TYPE;
vN2_DDU_75 m4t_acumulado_rl.N_HE_DDU_75_N42%TYPE;
vN2_DDO_100 m4t_acumulado_rl.NHE_DDO_100_N42%TYPE;
vN2_DCF_100 m4t_acumulado_rl.NHE_DCF_100_N42%TYPE;
vN2_F_100 m4t_acumulado_rl1.NHE_F_100_N2%TYPE;
vDAT_PAGM m4t_acumulado_rl.dat_pagm%TYPE;
vMES_1 NUMBER;
vMES_2 NUMBER;
begin
OPEN RUB_TRAB_EXTRA;
LOOP
FETCH RUB_TRAB_EXTRA INTO vID_EMPREGAD, vNOME, vN1_DDU_50, vN1_DDU_75, vN1_DD0_100, vN1_DCF_100, vN1_F_100, vN2_DDU_50, vN2_DDU_75, vN2_DDO_100, vN2_DCF_100, vN2_F_100;
EXIT WHEN RUB_TRAB_EXTRA%NOTFOUND;
IF pSEMESTRE = 1 THEN
IF vDAT_PAGM BETWEEN --dia25mesJaneiro-- AND --dia25mesJunho-- THEN
NULL;
END IF;
END IF;
IF pSEMESTRE = 2 THEN
NULL;
END IF;
END LOOP;
CLOSE RUB_TRAB_EXTRA;
commit;
end;
Falta-me agora saber como trabalhar com um intervalo de datas usando apenas dia e mês
IF pSEMESTRE = 1 THEN
IF vDAT_PAGM BETWEEN --dia25mesJaneiro-- AND --dia25mesJunho-- THEN
NULL;
END IF;
END IF;
Cumprimentos.
-
- Moderador
- Mensagens: 2016
- Registrado em: Qua, 12 Jan 2005 3:25 pm
- Localização: Araraquara - SP
Abraço,
Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP
Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP
Brother, para comparar dia e mês, dá uma olhada neste exemplo abaixo:
Qualquer coisa, manda pra gente.
SELECT 1
FROM DUAL
WHERE TO_CHAR (SYSDATE, 'DDMM') BETWEEN '0111' AND '0811';
-
- Rank: Programador Sênior
- Mensagens: 49
- Registrado em: Seg, 13 Out 2008 9:01 am
- Localização: Lisboa
Valeu,
Funciona assim:
Se colocar DDMM não funciona correctamente.
Funciona assim:
SELECT *
FROM M4T_ACUMULADO_RL
WHERE TO_CHAR (DAT_INI_ACT_EMP, 'DD') BETWEEN '01' AND '07'
AND
TO_CHAR (DAT_INI_ACT_EMP, 'MM') BETWEEN '11' AND '11';
-
- Rank: Programador Sênior
- Mensagens: 49
- Registrado em: Seg, 13 Out 2008 9:01 am
- Localização: Lisboa
Bem, o procedimento está um pouco mal estruturado, fruto da minha inexperiencia em programação...
Vou ter de usar um IF THEN em um col BETWEEN, isto será possivel??
Estava a testar uma coisa deste tipo... será possivel usar IF numa comparação com o BETWEEN?
Cumprimentos.
Vou ter de usar um IF THEN em um col BETWEEN, isto será possivel??
and
m4t_acumulado_rl.dat_pagm
BETWEEN
IF pSEMESTE = 1 THEN NULL; END IF; IF pSEMESTE = 2 THEN NULL; END IF;
AND
'2009-01-01'
Cumprimentos.
-
- Rank: Programador Sênior
- Mensagens: 49
- Registrado em: Seg, 13 Out 2008 9:01 am
- Localização: Lisboa
Bem, está feito.
Programadores experientes devem estar a dar uma boa risada deste código, mas está funcional, espero.
Obrigado pela ajuda.
Procedimento:
Programadores experientes devem estar a dar uma boa risada deste código, mas está funcional, espero.
Obrigado pela ajuda.
Procedimento:
create or replace procedure M4PR_LIST_TRAB_EXTRA
(
pSEMESTRE NUMBER,
pANO NUMBER
)
is
/* CURSOR PRIMEIRO SEMESTRE */
CURSOR RUB_TRAB_EXTRA_1 IS
SELECT
m4t_acumulado_rl.id_empregad,
m4t_empregad.nome,
sum(m4t_acumulado_rl.N_HE_DDU_50_N41),
sum(m4t_acumulado_rl.N_HE_DDU_75_N41),
sum(m4t_acumulado_rl.NHE_DDO_100_N41),
sum(m4t_acumulado_rl.NHE_DCF_100_N41),
sum(m4t_acumulado_rl1.NHE_F_100_N1),
sum(m4t_acumulado_rl.N_HE_DDU_50_N42),
sum(m4t_acumulado_rl.N_HE_DDU_75_N42),
sum(m4t_acumulado_rl.NHE_DDO_100_N42),
sum(m4t_acumulado_rl.NHE_DCF_100_N42),
sum(m4t_acumulado_rl1.NHE_F_100_N2)
FROM m4t_acumulado_rl, m4t_acumulado_rl1, m4t_empregad
where
m4t_acumulado_rl.id_sociedad = m4t_acumulado_rl1.id_sociedad
and
m4t_acumulado_rl.id_empregad = m4t_acumulado_rl1.id_empregad
and
m4t_acumulado_rl.dat_ini_act_emp = m4t_acumulado_rl1.dat_ini_act_emp
and
m4t_acumulado_rl.data_imputacao = m4t_acumulado_rl1.data_imputacao
and
m4t_acumulado_rl.dat_pagm = m4t_acumulado_rl1.dat_pagm
and
m4t_acumulado_rl.id_empregad = m4t_empregad.id_empregad
and
(m4t_acumulado_rl.N_HE_DDU_50_N41 > 0 or
m4t_acumulado_rl.N_HE_DDU_50_N41 > 0 or
m4t_acumulado_rl.N_HE_DDU_75_N41 > 0 or
m4t_acumulado_rl.NHE_DDO_100_N41 > 0 or
m4t_acumulado_rl.NHE_DCF_100_N41 > 0 or
m4t_acumulado_rl1.NHE_F_100_N1 > 0 or
m4t_acumulado_rl.N_HE_DDU_50_N42 > 0 or
m4t_acumulado_rl.N_HE_DDU_75_N42 > 0 or
m4t_acumulado_rl.NHE_DDO_100_N42 > 0 or
m4t_acumulado_rl.NHE_DCF_100_N42 > 0 or
m4t_acumulado_rl1.NHE_F_100_N2 > 0)
and
m4t_acumulado_rl.dat_pagm > TO_DATE(pANO,'YY')
AND
m4t_acumulado_rl.dat_pagm <= TO_DATE((pANO + 1),'YY') /* N CONSIGO FAZER: m4t_acumulado_rl.dat_pagm = TO_DATE(pANO,'YY') */
and
TO_CHAR(m4t_acumulado_rl.dat_pagm, 'DD') BETWEEN '25' AND '25'
AND
TO_CHAR(m4t_acumulado_rl.dat_pagm, 'MM') BETWEEN '01' AND '06'
GROUP BY
m4t_acumulado_rl.id_empregad, m4t_empregad.nome
order by m4t_empregad.nome;
/* CURSOR SEGUNDO SEMESTRE */
CURSOR RUB_TRAB_EXTRA_2 IS
SELECT
m4t_acumulado_rl.id_empregad,
m4t_empregad.nome,
sum(m4t_acumulado_rl.N_HE_DDU_50_N41),
sum(m4t_acumulado_rl.N_HE_DDU_75_N41),
sum(m4t_acumulado_rl.NHE_DDO_100_N41),
sum(m4t_acumulado_rl.NHE_DCF_100_N41),
sum(m4t_acumulado_rl1.NHE_F_100_N1),
sum(m4t_acumulado_rl.N_HE_DDU_50_N42),
sum(m4t_acumulado_rl.N_HE_DDU_75_N42),
sum(m4t_acumulado_rl.NHE_DDO_100_N42),
sum(m4t_acumulado_rl.NHE_DCF_100_N42),
sum(m4t_acumulado_rl1.NHE_F_100_N2)
FROM m4t_acumulado_rl, m4t_acumulado_rl1, m4t_empregad
where
m4t_acumulado_rl.id_sociedad = m4t_acumulado_rl1.id_sociedad
and
m4t_acumulado_rl.id_empregad = m4t_acumulado_rl1.id_empregad
and
m4t_acumulado_rl.dat_ini_act_emp = m4t_acumulado_rl1.dat_ini_act_emp
and
m4t_acumulado_rl.data_imputacao = m4t_acumulado_rl1.data_imputacao
and
m4t_acumulado_rl.dat_pagm = m4t_acumulado_rl1.dat_pagm
and
m4t_acumulado_rl.id_empregad = m4t_empregad.id_empregad
and
(m4t_acumulado_rl.N_HE_DDU_50_N41 > 0 or
m4t_acumulado_rl.N_HE_DDU_50_N41 > 0 or
m4t_acumulado_rl.N_HE_DDU_75_N41 > 0 or
m4t_acumulado_rl.NHE_DDO_100_N41 > 0 or
m4t_acumulado_rl.NHE_DCF_100_N41 > 0 or
m4t_acumulado_rl1.NHE_F_100_N1 > 0 or
m4t_acumulado_rl.N_HE_DDU_50_N42 > 0 or
m4t_acumulado_rl.N_HE_DDU_75_N42 > 0 or
m4t_acumulado_rl.NHE_DDO_100_N42 > 0 or
m4t_acumulado_rl.NHE_DCF_100_N42 > 0 or
m4t_acumulado_rl1.NHE_F_100_N2 > 0)
and
m4t_acumulado_rl.dat_pagm > TO_DATE(pANO,'YY')
AND
m4t_acumulado_rl.dat_pagm <= TO_DATE((pANO + 1),'YY') /* N CONSIGO FAZER: m4t_acumulado_rl.dat_pagm = TO_DATE(pANO,'YY') */
and
TO_CHAR(m4t_acumulado_rl.dat_pagm, 'DD') BETWEEN '25' AND '25'
AND
TO_CHAR(m4t_acumulado_rl.dat_pagm, 'MM') BETWEEN '06' AND '12'
GROUP BY
m4t_acumulado_rl.id_empregad, m4t_empregad.nome
order by m4t_empregad.nome;
vID_EMPREGAD m4t_acumulado_rl.id_empregad%TYPE;
vNOME m4t_empregad.nome%TYPE;
vN1_DDU_50 m4t_acumulado_rl.N_HE_DDU_50_N41%TYPE;
vN1_DDU_75 m4t_acumulado_rl.N_HE_DDU_75_N41%TYPE;
vN1_DD0_100 m4t_acumulado_rl.NHE_DDO_100_N41%TYPE;
vN1_DCF_100 m4t_acumulado_rl.NHE_DCF_100_N41%TYPE;
vN1_F_100 m4t_acumulado_rl1.NHE_F_100_N1%TYPE;
vN2_DDU_50 m4t_acumulado_rl.N_HE_DDU_50_N42%TYPE;
vN2_DDU_75 m4t_acumulado_rl.N_HE_DDU_75_N42%TYPE;
vN2_DDO_100 m4t_acumulado_rl.NHE_DDO_100_N42%TYPE;
vN2_DCF_100 m4t_acumulado_rl.NHE_DCF_100_N42%TYPE;
vN2_F_100 m4t_acumulado_rl1.NHE_F_100_N2%TYPE;
vDAT_PAGM m4t_acumulado_rl.dat_pagm%TYPE;
vMES_1 NUMBER;
vMES_2 NUMBER;
begin
/* SE FOR PRIMEIRO SEMESTRE */
IF pSEMESTRE = 1 THEN
OPEN RUB_TRAB_EXTRA_1;
LOOP
FETCH RUB_TRAB_EXTRA_1 INTO vID_EMPREGAD, vNOME, vN1_DDU_50, vN1_DDU_75, vN1_DD0_100, vN1_DCF_100, vN1_F_100, vN2_DDU_50, vN2_DDU_75, vN2_DDO_100, vN2_DCF_100, vN2_F_100;
EXIT WHEN RUB_TRAB_EXTRA_1%NOTFOUND;
null;
END LOOP;
CLOSE RUB_TRAB_EXTRA_1;
END IF;
/* SE FOR SEGUNDO SEMESTRE */
IF pSEMESTRE = 2 THEN
OPEN RUB_TRAB_EXTRA_2;
LOOP
FETCH RUB_TRAB_EXTRA_2 INTO vID_EMPREGAD, vNOME, vN1_DDU_50, vN1_DDU_75, vN1_DD0_100, vN1_DCF_100, vN1_F_100, vN2_DDU_50, vN2_DDU_75, vN2_DDO_100, vN2_DCF_100, vN2_F_100;
EXIT WHEN RUB_TRAB_EXTRA_2%NOTFOUND;
null;
END LOOP;
CLOSE RUB_TRAB_EXTRA_2;
END IF;
commit;
end;
-
- Informação
-
Quem está online
Usuários navegando neste fórum: Nenhum usuário registrado e 3 visitantes