Jump to content
tpessegueiro

Ajuda procedimento

Recommended Posts

tpessegueiro

estou a tentar criar um procedimento que mostre as 10 ultimas vacas que pariram no ultimo mes

ja fiz:

create or replace
procedure "VACAS_PARIRAM_MES"(p_i_mes in number, p_i_dia in number)
is 
v_codigo  vacas.codvaca%type ;
v_dataparto emprenhamento.datparto%type;


cursor c_vacas(p_mes Number,p_dia Number)
is


SELECT vacas.codvaca 
FROM vacas, vacas_emprenhamento, emprenhamento
WHERE vacas_emprenhamento.codvaca = vacas.codvaca
AND vacas_emprenhamento.datparto = emprenhamento.datparto
AND TO_CHAR (emprenhamento.datparto, 'mm') = TO_CHAR (p_mes)
AND TO_NUMBER (TO_CHAR (emprenhamento.datparto, 'dd')) = p_dia
group by vacas.codvaca
ORDER BY  (vacas.codvaca)DESC;

BEGIN
OPEN c_vacas (p_i_mes, p_i_dia);
LOOP
FETCH c_vacas
INTO v_codigo, v_dataparto;
EXIT WHEN c_vacas%NOTFOUND;
DBMS_OUTPUT.put_line (v_codigo || ' -> ' || TO_CHAR
(v_dataparto));
EXIT WHEN c_vacas%ROWCOUNT = 10;
END LOOP;
IF (c_vacas%ROWCOUNT = 0)
THEN
DBMS_OUTPUT.put_line ('Não foram encontradas vacas');
END IF;
CLOSE c_vacas;
END;

ele está-me a dar erro principalmente no fetch

Error(24,1): PLS-00394: wrong number of values in the INTO list of a FETCH statement

mas acredito que não seja só isto o problema deste procedimento.

Share this post


Link to post
Share on other sites
pedrotuga

No teu cursor só pedes uma coluna mas depois tentas mete-la para um par de variaveis.

Ou seja, as seguintes linhas não batem certo:

cursor c_vacas(p_mes Number,p_dia Number)
is
SELECT vacas.codvaca 

...

FETCH c_vacas
INTO v_codigo, v_dataparto

Tens que selecionar tambem a data de parto ou então, fazer fetch into só do v_código, conforme o que precisares.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.