En este artículo, veremos el proceso de desarrollo de funciones que devuelven una tabla. base de datos de muestras de películas
CREATE OR REPLACE FUNCTION get_film (p_pattern VARCHAR) RETURNS TABLE ( film_title VARCHAR, film_release_year INT ) AS $$ BEGIN RETURN QUERY SELECT title, cast( release_year as integer) FROM film WHERE title ILIKE p_pattern ; END; $$ LANGUAGE 'plpgsql';
Esta función get_film(varchar) acepta un parámetro p_pattern que es un patrón que desea hacer coincidir con el título de la película.
Para devolver una tabla desde la función, utilice la sintaxis de RETURNS TABLE y especifique las columnas de la tabla. Cada columna está separada por una coma (,).
En la función, devolvemos una consulta que es el resultado de una instrucción SELECT . Observe que las columnas de la declaración SELECT deben coincidir con las columnas de la tabla que queremos devolver. Debido a que el tipo de datos de release_year de la tabla de películas no es un número entero, tenemos que convertirlo en un número entero usando CAST.
Podemos probar la función usando la siguiente declaración:
SELECT * FROM get_film ('Al%');
get_film(varchar) Al
SELECT get_film ('Al%');
CREATE OR REPLACE FUNCTION get_film (p_pattern VARCHAR, p_year INT) RETURNS TABLE ( film_title VARCHAR, film_release_year INT ) AS $$ DECLARE var_r record; BEGIN FOR var_r IN(SELECT title, release_year FROM film WHERE title ILIKE p_pattern AND release_year = p_year) LOOP film_title := upper(var_r.title) ; film_release_year := var_r.release_year; RETURN NEXT; END LOOP; END; $$ LANGUAGE 'plpgsql';
get_film(varchar, int)
- p_patrón a
La instrucción RETURN NEXT agrega una fila al conjunto de resultados de la función. La ejecución continúa y el conjunto de resultados se acumula en cada iteración del bucle.
Vea el siguiente caso de prueba:
SELECT * FROM get_film ('%er', 2006);
Producción:
Publicación traducida automáticamente
Artículo escrito por RajuKumar19 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA