Pues bien, tambien podemos ligar la declaración de un cursor a los resultados proporcionados por un procedimientotanto en r4GL como en SPL.
Imaginemos un procedimiento que nos proporcione una lista de los clientes de un determinado pais. Si deseamos obtener información detallada de todos los paises haremos lo siguiente:
* En R4GL:
##
## Lo primero que debemos hacer es preparar el procedimiento que vamos a
## utilizar.
## En la definición del procedimiento incluimos un interrogante por cada
## parámetro de entrada, en nuestro ejemplo recibirá el id del país
## y nos proporcionará el id y nombre de cada uno de los clientes.
##
PREPARE procClientes FROM "EXECUTE PROCEDURE procClientes(?)"
##
## A continuación declaramos un cursor de la tabla de paises tal como hemos visto en entradas anteriores:
##
DECLARE cursorPais CURSOR FOR
SELECT id_pais, nombre_pais FROM paises
ORDER BY nombre_pais
FOREACH cursorPais INTO idPais, nombrePais
##
## Le paso el idPais al procedimiento y nos devuelve una lisa de clientes
##
FOREACH procClientes USING idPais INTO idCliente, nombreCliente
----
----
END FOREACH;
END FOREACH
* En SPL:
FOREACH
SELECT id_pais, nombre_pais INTO idPais, nombrePais
FROM paises
ORDER BY nombre_pais
--
-- En Spl no hace falta preparar el procedimiento.
-- Lo utilizamos directamente pasandole los parámetros
-- de entrada entre parentesis
--
FOREACH
EXECUTE PROCEDURE procCLientes (idPais)
INTO idCliente, nombreCliente;
RETURN nombrePais, nombreCliente WITH RESUME;
END FOREACH;
END FOREACH;
Espero que os sea de utilidad.
Hasta la próxima.
No hay comentarios:
Publicar un comentario