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

Function PostgreSQL函数,需要获取函数内部的变量,function,postgresql,variables,plpgsql,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 ); 我需要创建一个与该表相关的函数,该函数为我提供了占地面积。以下是我目前所拥有的: CREATE FUNCT

我需要一些关于在postgreSQL中定义函数的帮助:

以下是我的表格定义:

CREATE TABLE venue (
   id INTEGER DEFAULT NEXTVAL('venue_id_seq')
 , building_code building_code
 , floorNo int
 , roomNo int
 , width int
 , length int
);
我需要创建一个与该表相关的函数,该函数为我提供了占地面积。以下是我目前所拥有的:

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;

我想你可以做类似的事情

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

SQL函数中没有变量。你需要使用或来实现这一点

使用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来解决。

我习惯于在参数名前面加上
,比如
\u id
,以避免冲突。它还有助于快速识别代码中的参数名称。此外,我还建议不要使用未加引号的CamelCase标识符,如
floorrarea
。这很容易引起混乱。由此产生了一些令人绝望的问题。我在工作中使用SQL Server,PostgreSQL只是为了好玩(尽管我想使用PostgreSQL),所以我们总是使用@before参数。不管怎样,谢谢你的提示