在PostgreSQL中创建带有函数的表时出现“函数中的返回类型不匹配”错误

时间:2019-09-16 17:00:59

标签: sql postgresql

我在SQL中很陌生,我正在尝试创建一个返回表的函数,我的代码是

create or replace function ratios_table (datefrom date)
returns table(
    date_of_day date,
    counter integer
    )
as $$
    select
       "creationDate",
        count("interactionId")
    from "UserInteractions"
    where "creationDate" >= $1
    group by "creationDate"
$$
language SQL;

我得到:

声明要返回记录的函数中的返回类型不匹配

如果我这样在p​​lpgsql中写它(肯定被击中):

create or replace function ratios_table (datefrom date)
returns table(
    date_of_day date,
    counter integer
    )
as $$
    begin
        select
            "creationDate",
            count("interactionId")
        from "UserInteractions"
        where "creationDate" >= $1
        group by "creationDate"
    return end;
 $$
language plpgsql;

我知道

ERROR:  syntax error at or near "return"
LINE 14:     return end;

非常感谢您的帮助,并为新手提供建议。谢谢!

1 个答案:

答案 0 :(得分:0)

counter值是count()函数的结果,该函数返回bigint

counter声明为bigint,它将起作用。

请注意,完整的错误消息会指出这一点

  

错误:声明为返回记录的函数中的返回类型不匹配
  详细信息:最终语句在列返回bigint而不是整数   2。
  上下文:SQL函数“ ratios_table”

我在SQL中很陌生,我正在尝试创建一个返回表的函数,我的代码是

create or replace function ratios_table (datefrom date)
returns table(
    date_of_day date,
    counter bigint
    )
as $$
    select
       "creationDate",
        count("interactionId")
    from "UserInteractions"
    where "creationDate" >= $1
    group by "creationDate"
$$
language SQL;