1

在 postgreSQL 中定义函数时,我需要一些帮助:

这是我的表定义:

CREATE TABLE venue (
   id INTEGER DEFAULT NEXTVAL('venue_id_seq')
 , building_code building_code
 , floorNo int
 , roomNo int
 , width int
 , length int
);

我需要创建一个与该表相关的函数,该函数为我提供了 Floor area。这是我目前所拥有的:

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;
4

2 回答 2

2

SQL函数中没有变量。为此,您需要使用PL/pgSQL其他过程语言

使用 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;

考虑一下我在其他答案中写的关于参数名称的内容。

但是像这样的简单任务应该用普通的 SQL 来解决,而不需要像@Roman 已经提供的变量。

于 2013-08-14T16:03:42.197 回答
1

我认为你可以做类似的事情

CREATE FUNCTION floorArea(idp int)
RETURNS int
as
$$
    select width * length from venue as v where v.id = idp
$$ LANGUAGE SQL;

sql 小提琴演示

于 2013-08-14T14:17:06.600 回答