Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

marcelq

Erro na execução da procedure

Recommended Posts

Amigos, acabo de me registrar no forum pois me deparei com um erro que esta me tirando o sossego.

 

Nunca tinha feito nada em oracle até que me surgiu esse relatório onde preciso fazer a seguinte procedure.

 

create or replace
PROCEDURE "PR_OCIOSIDADE_TURMA" IS
    
    cursor c_turma is
        select idteam from call 
        where timeend is NULL and idteam is not null
        group by idteam order by idteam;               
     
    cursor c_chamada (p_idteam in call.idteam%type) is
        select idcall, idteam, datecall, timestart, timeend, idprofessional from call 
        where idteam = p_idteam order by timestart;
            
    r_turma  c_turma%rowtype;
    r_chamada  c_chamada%rowtype;
    v_idteam number; 
    v_datecall date;
    v_timestart VARCHAR2(8);
        
BEGIN 
  
    delete ociosidade; 
     
    OPEN c_turma;
    LOOP
        fetch c_turma into r_turma;
        v_idteam := r_turma.idteam;
        
        OPEN c_chamada(v_idteam);
        
        v_datecall := null;
        v_timestart := '';
        
        LOOP
            fetch c_chamada into r_chamada;
            
            IF v_timestart = '' AND r_chamada.timeend is null THEN
                v_datecall := r_chamada.datecall;
                v_timestart := r_chamada.timestart;
                
            ELSIF v_timestart <> '' AND r_chamada.timeend is not null THEN
                insert into ociosidade values(r_chamada.idcall, r_chamada.idteam, v_datecall, v_timestart, 
                r_chamada.datecall, r_chamada.timestart, r_chamada.idprofessional, null);
                
	              v_datecall := null;
                v_timestart := '';
        
            END IF;

         END LOOP;
 
    END LOOP;
    
END;

 

Consigo salvar a procedure numa boa, mas na hora de executar da o seguinte erro:

 

An error was encountered performing the request aperation

ORA-00900 invalid SQL statement

Error at Line 4

 

 

Desde já agradeço a todos e espero poder ajudar também (em outras linguagens por enquanto)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Os sql´s rodam a parte no SqlPlus ?

 

Rodam sim cara.

 

O problema é quando vou executar a procedure.

 

O problema maior é que não estou acostumado com os erros do oracle.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Talvez este group by sem função agregadora , tente ....

 

cursor c_turma is 
select idteam from call  
where timeend is NULL and idteam is not null 
--group by idteam 
order by idteam; 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Talvez este group by sem função agregadora , tente ....

 

cursor c_turma is 
select idteam from call  
where timeend is NULL and idteam is not null 
--group by idteam 
order by idteam; 

 

Motta, os sql´s estão corretos.

 

Minha dúvida é quanto a estrutura da procedure.

Não sei se estou estruturando corretamente (os cursores, e a variavel que eu uso no sql do segundo cursor)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoalmente acho a estrutura de cursor ruim de trabalhar, prefiro usar um for ainda que seja mais custoso em termos de performance.

 

FOR R IN (ELECT * FROM YATBELA)
LOOP
 IF R.CAMPO1 .....
END LOOP;

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.