我有一个名为Dvdrental的数据库,在该数据库中有一个名为public.film_not_in_stock的函数,但我不明白它的作用。
-- Function: public.film_not_in_stock(integer, integer)
-- DROP FUNCTION public.film_not_in_stock(integer, integer);
CREATE OR REPLACE FUNCTION public.film_not_in_stock(
IN p_film_id integer,
IN p_store_id integer,
OUT p_film_count integer)
RETURNS SETOF integer AS
$BODY$
SELECT inventory_id
FROM inventory
WHERE film_id = $1
AND store_id = $2
AND NOT inventory_in_stock(inventory_id);
$BODY$
LANGUAGE sql VOLATILE
COST 100
ROWS 1000;
ALTER FUNCTION public.film_not_in_stock(integer, integer)
OWNER TO postgres;
答案 0 :(得分:0)
这是LANGUAGE SQL
功能。不是plpgsql。
SQL语言函数隐式返回它们运行的最后一个查询的结果。
你的函数,如果它是在plpgsql中重写的,那么
$BODY$
BEGIN
RETURN QUERY
SELECT inventory_id
FROM inventory
WHERE film_id = $1
AND store_id = $2
AND NOT inventory_in_stock(inventory_id);
$BODY$
LANGUAGE plpgsql VOLATILE
但在LANGUAGE SQL
函数中,RETURN
是隐含的。