不知道这个功能是做什么的

时间:2017-10-11 13:51:12

标签: postgresql

我有一个名为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;

1 个答案:

答案 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是隐含的。