PostgreSQL函数,需要在函数内部获取变量

时间:2013-08-14 14:09:56

标签: function postgresql variables plpgsql

我需要一些帮助来定义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;

2 个答案:

答案 0 :(得分:2)

SQL 函数中没有变量。您需要使用PL/pgSQLanother 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;

sql fiddle demo