Oracle - SQL Statment ignored - Error

 
Vista:

SQL Statment ignored - Error

Publicado por CGSC (1 intervención) el 06/03/2013 17:20:19
Hola.! Agradeceria alguna ayuda que me puedan dar, llevo trabajando en ello unos dias y no he encontrado solucion...

estoy creando un Function en oracle, que me devuelve un conjunto de datos cuando es llamada.
creo un tipo de dato que es la tabla donde se contiene la informacion del resultado.

create or replace
FUNCTION HistorialAnnoVacaciones(cedulaPersona varchar2)---retorno de la funcion ---
return tipoTablaFinalHistorialAnnoV2 as --- variables ---
resultado tipoTablaFinalHistorialAnnoV2;
annoIngreso number;
annoActual number;
annoConsulta number;
mesConsulta varchar(3);
iteracion number;--- cuerpo, consulta ---
begin ---insercion de datos en variables---
select to_number(to_char(sysdate,'YYYY'),'9999') into annoActual from dual;
select to_number(to_char(Fecha_Contratacion,'YYYY'),'9999') into annoIngreso from Vacaciones_Control where Cedula = cedulaPersona;
select to_char(Fecha_Contratacion,'MON') into mesConsulta from Vacaciones_Control where Cedula = cedulaPersona;
annoConsulta := annoActual;
iteracion := annoActual - annoIngreso; ---para sacar el reporte de todos los años---
while iteracion >= 0 loop
select Persona.Nombre,
VacacionesControl.Fecha_Contratacion,
Persona.Cedula,
VacacionesSolicitudes.Fecha_solicitud,
(select sum(VacacionesSolicitudes.Cantidad_dias)
from VACACIONES_SOLICITUDES VacacionesSolicitudes, PERSONA Persona, VACACIONES_CONTROL VacacionesControl
WHERE Persona.cedula=cedulaPersona
and Persona.CEDULA = VacacionesSolicitudes.CEDULA
and VacacionesControl.cedula = Persona.cedula --- cedula persona
and VacacionesSolicitudes.Fecha_inicial between to_date(01/mesConsulta/annoConsulta) and to_date(01/mesConsulta/(annoConsulta+1))
and VacacionesSolicitudes.ESTADO = 'A') dias_vacacionados
into resultado
from VACACIONES_SOLICITUDES VacacionesSolicitudes, PERSONA Persona, VACACIONES_CONTROL VacacionesControl
WHERE Persona.cedula = cedulaPersona ---cedula persona
and Persona.CEDULA = VacacionesSolicitudes.CEDULA
and VacacionesControl.cedula = Persona.Cedula
and rownum = 1; ---34-- --condicion de salida ---
annoConsulta := annoConsulta + 1;
iteracion := iteracion - 1;
end loop; ----fin del while --
end;

el error que me da es el siguiente
Error(17,13): PL/SQL: SQL Statement ignored -> linea del while
Error(29,13): PL/SQL: ORA-00947: not enough values -> linea donde esta el resultado
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

SQL Statment ignored - Error

Publicado por luis (235 intervenciones) el 08/03/2013 15:18:37
No comprendo tus dudas??? El mismo motor de BD te está diciencdo que es lo que debes revisar:

Error(17,13): PL/SQL: SQL Statement ignored -> linea del while
Error(29,13): PL/SQL: ORA-00947: not enough values -> linea donde esta el resultado

El primero dice sentencia ignorada
El segundo es un error del valor, verifica por favor el valor que se usa, ademas te muestra un codigo de error ORA-00947 .

Quieres que te resuelvan el trabajo? Si el mismo oracle te dice donde esta el error pues modifica tu código para que no salgan esos errores.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

SQL Statment ignored - Error

Publicado por Alixandro (63 intervenciones) el 03/06/2013 22:14:18
Sr. CGSC, aunque no comparto en su totalidad la forma como el señor Luis les ofrece su ayuda (es muy radical y un insultante), no dejo de darle la razon, aqui aparencen unos personajes que no se detenien un segun a leer los mensajes ni mucho menos a revalidar la sintaxis de su codigo, y en muchos casos tienen el proyecto o la tarea y quieren que en el foro se los resuelvan todo. Colegas los foros son para ayudarno a solucionar problemas que nos han agotado todos los recursos.

Tu caso esta bastante claro, el compilador de oracle no se equivoca, ni pretenser saber mas que el, ya vi cual es tu error, os lo dejo para que analize.

while iteracion >= 0 loop

select Persona.Nombre,VacacionesControl.Fecha_Contratacion,
Persona.Cedula, VacacionesSolicitudes.Fecha_solicitud,
(select sum(VacacionesSolicitudes.Cantidad_dias)
from VACACIONES_SOLICITUDES VacacionesSolicitudes, PERSONA Persona, VACACIONES_CONTROL VacacionesControl
WHERE Persona.cedula=cedulaPersona
and Persona.CEDULA = VacacionesSolicitudes.CEDULA
and VacacionesControl.cedula = Persona.cedula --- cedula persona
and VacacionesSolicitudes.Fecha_inicial between to_date(01/mesConsulta/annoConsulta) and to_date(01/mesConsulta/(annoConsulta+1))
and VacacionesSolicitudes.ESTADO = 'A') dias_vacacionados
into resultado


from VACACIONES_SOLICITUDES VacacionesSolicitudes, PERSONA Persona, VACACIONES_CONTROL VacacionesControl
WHERE Persona.cedula = cedulaPersona ---cedula persona
and Persona.CEDULA = VacacionesSolicitudes.CEDULA
and VacacionesControl.cedula = Persona.Cedula
and rownum = 1; ---34-- --condicion de salida ---
annoConsulta := annoConsulta + 1;
iteracion := iteracion - 1;
end loop;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar