marcelq 0 Denunciar post Postado Dezembro 23, 2009 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
Faccruz 0 Denunciar post Postado Dezembro 23, 2009 De uma olhada nesse link http://ora-00900.ora-code.com/ abraços... Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Dezembro 23, 2009 Os sql´s rodam a parte no SqlPlus ? Compartilhar este post Link para o post Compartilhar em outros sites
marcelq 0 Denunciar post Postado Dezembro 25, 2009 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
Motta 645 Denunciar post Postado Dezembro 25, 2009 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
marcelq 0 Denunciar post Postado Dezembro 25, 2009 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
Motta 645 Denunciar post Postado Dezembro 26, 2009 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