2017-02-06 34 views
0

我想创建一个Posgresql函数返回一个表:无法创建PG SQL函数

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; 

它说:

ERROR: syntax error at or near "begin" 

回答

1

试试这个:

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

有在SQL function没有begin。你的意思是创建一个plpgsql function

然后用LANGUAGE plpgsql代替。
并用引号括起来的函数体无论哪种方式,它的文本 - 最好是美元报价:

+0

我应该在哪里放置 “$ FUNC $”在函数的结尾:在'language plpgsql之前或之后;'? – Torito

+1

@Torito:请参阅手册中的示例。 [这里](https://www.postgresql.org/docs/current/static/sql-createfunction.html#SQL-CREATEFUNCTION-EXAMPLES)和[here](https://www.postgresql.org/docs/current /static/xfunc-sql.html)和[这里](https://www.postgresql.org/docs/current/static/plpgsql-control-structures.html#AEN65553) –

+0

@a_horse_with_no_name,我不需要。 – Torito