我需要一些帮助来定义postgreSQL中的函数:
这是我的表定义:
CREATE TABLE venue (
id INTEGER DEFAULT NEXTVAL('venue_id_seq')
, building_code building_code
, floorNo int
, roomNo int
, width int
, length int
);
我需要创建一个与该表相关的函数,它给出了Floor区域。这是我到目前为止所拥有的:
CREATE FUNCTION floorArea(id int) RETURNS int AS '
SELECT venue.width * venue.length AS result ;
' LANGUAGE SQL;
我不知道如何制作变量等 我想要的是:
var width= Select width from venue where id=$1;
var length= Select length from venue where id=$1;
return width * length;
答案 0 :(得分:2)
SQL 函数中没有变量。您需要使用PL/pgSQL或another procedural language。
使用plpgsql它可能如下所示:
CREATE FUNCTION floor_area(_id int)
RETURNS int AS
$func$
DECLARE
_width int;
_length int;
BEGIN
SELECT INTO _width, _length
width, length
FROM venue
WHERE id = _id;
RETURN width * length;
END
$func$ LANGUAGE plpgsql;
考虑一下我写的关于parameter names in my other answer的内容。
但像这样的简单任务应该使用普通的SQL来解决,而不需要像@Roman already supplied这样的变量。
答案 1 :(得分:1)
我认为你可以做点什么
CREATE FUNCTION floorArea(idp int)
RETURNS int
as
$$
select width * length from venue as v where v.id = idp
$$ LANGUAGE SQL;