随机双函数 - POSTGRESQL

Random Double Function - POSTGRESQL

我正在尝试编写一个接受最小输入和最大输入以及 returns 双精度输入的函数。

输入:

high (integer)
low (integer)

输出:

val (double)

我的SQL代码是:

CREATE OR REPLACE FUNCTION random_between(low INT ,high INT) 
   RETURNS DOUBLE AS

BEGIN
   RETURN floor(random()* (high-low + 1) + low);
END;

错误:

ERROR: syntax error at or near "BEGIN"

您可以将其编写为纯 SQL 函数,如下所示:

create or replace function random_between(low int ,high int) 
returns double precision as $$
    select floor(random()* (high-low + 1) + low);
$$ language sql;

您的代码有问题:

  • 函数体需要用单引号括起来(或者等价的东西,比如$$

  • Postgres 中没有 double 数据类型;也许你的意思是 double precision;但是请注意,这是一个 不精确 数据类型:这可能是您想要的,也可能不是您想要的,但请确保您理解其中的含义

  • 你需要指定函数的language