不知道这个功能是什么
问题描述:
我有一个名为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;
答
这是一个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
是隐含的。
看起来像检查广告资源,以查看电影的ID是否出现在给定商店ID中。有什么困惑呢? – duffymo
但是之后它做了什么?因为这是一个功能,它必须做些什么? –
一个函数(在Postgres使用的意义上)需要一些输入,并返回一些输出,并可能还有副作用。在这种情况下,输入是参数'p_film_id'和'p_store_id',输出是该'SELECT'语句的结果。 – IMSoP