0

I want to create a function in Posgresql which returns a table:

create or replace function my_func1(var1 integer, var2 integer[], var3 integer)
  returns table(col1 integer, col2 integer, col3 timestamp) 
as

begin

    select  .........
end;
language sql;

It says:

ERROR:  syntax error at or near "begin"
Torito
  • 165
  • 11

2 Answers2

2

There is no begin in an SQL function. Did you mean to create a plpgsql function?

Then use LANGUAGE plpgsql instead.
And enclose the function body in quotes either way, it's text - preferably dollar quotes:

Community
  • 1
  • 1
Erwin Brandstetter
  • 539,169
  • 125
  • 977
  • 1,137
1

Try this:

create or replace function my_func1(var1 integer, var2 integer[], var3 integer)
returns table(col1 integer, col2 integer, col3 timestamp) 
as
$func$
begin
    return query 
    select  .........
end;
$func$
language plpgsql;
Ben H
  • 415
  • 8
  • 15