Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Oracle »

Error al crear función

Estas en el tema de Error al crear función en el foro de Oracle en Foros del Web. Estoy teniendo problemas, no me critiqueis mucho el código que se que es malísimo, pero bueno, no os imaginais la mierda de libro que tengo ...
  #1 (permalink)  
Antiguo 04/09/2012, 01:20
Avatar de juanmiguel  
Fecha de Ingreso: enero-2009
Mensajes: 18
Antigüedad: 15 años, 3 meses
Puntos: 0
Error al crear función

Estoy teniendo problemas, no me critiqueis mucho el código que se que es malísimo, pero bueno, no os imaginais la mierda de libro que tengo y los palos de ciego que estoy dando:

Si se os ocurre otra forma de hacer lo que quiero os lo agradecería porque además es lo que me pide el ejercicio 2 formas de hacerlo para comprobar los costes de ejecución.

Ahí va el código:

Código:
create or replace function devuelve_maximas_cuentas return t_tabla_anidada as v_ret t_tabla_anidada;
CURSOR c_clientes IS 
SELECT idPer, ltNomApell
FROM CLIENTI
ORDER BY APELLIDO;

CURSOR c_cuentas (v_idPers IN VARCHAR2) is
SELECT idCTR1 from (select ctacorr.idctr AS idCTR1 FROM CLIENTI, RELCLICTR,              CTacorr 
                                 WHERE clienti.idpers = relclictr.idpers 
                                 AND RELCLICTR.IDCTR = CTacorr.IDCTR 
                                 AND clienti.idpers='v_idPers'
                                 ORDER BY imSldAct DESC
                                 ) 
where rownum < 4;

v_idPers VARCHAR2(30);
v_ltNomApell VARCHAR2(30);
v_idCtr1 VARCHAR2(30);
v_idCtr2 VARCHAR2(30);
v_idCtr3 VARCHAR2(30);


begin
OPEN c_clientes;
FETCH c_clientes into v_idPers, v_ltNomApell;
WHILE c_clientes%FOUND LOOP
    OPEN c_cuentas (v_idPers);
    FETCH c_cuentas into v_idCtr1, v_idCtr2, v_idCtr3;
    WHILE c_cuentas%FOUND LOOP
        v_ret := t_tabla_anidada();
        v_ret.extend;
        v_ret(v_ret.count) := t_resultado(v_idPers, v_ltNomApell, v_idCtr1, v_idCtr2, v_idCtr3);
        FETCH c_cuentas into v_idCtr1, v_idCtr2, v_idCtr3;
    END LOOP;
    CLOSE c_cuentas;
    FETCH c_clientes into v_idPers, v_ltNomApell;
END LOOP;
CLOSE c_clientes;
return v_ret;
end devuelve_maximas_cuentas;
Me da al crear la funcion el error: ERROR en línea 29: PL/SQL: SQL Statement ignored

Muchas gracias de nuevo

Etiquetas: ejercicio, select, sql, tabla, formulario
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:02.