声明postgresql声明时发生语法错误

时间:2016-04-14 01:03:30

标签: postgresql syntax plpgsql declare

CREATE OR REPLACE FUNCTION fn_SplitArrayStr( anyelement , anyelement )
RETURNS anyarray 
LANGUAGE SQL 
AS $$
DECLARE f1 text , f2  text ; 
BEGIN
    f1 := $1::text ; 
    f2 := $2::text ; 
    SELECT * FROM UNNEST( string_to_array(f1, f2) ) as c1 ; 
END ;
$$; 
  

错误:“text”或附近的语法错误
  第2行:DECLARE f1文本,f2文本;

我该如何改变?

3 个答案:

答案 0 :(得分:2)

我看到两个问题:

  1. 错误的语言规范 - PostgreSQL本机过程语言是 plpgsql
  2. DECLARE statement使用分号分隔各个变量声明。

    postgres=# create or replace function foo()
    returns int as $$
    declare a int; b int;
    begin 
      a := 10; b := 20;
      return a + b;
    end;
    $$ language plpgsql;
    CREATE FUNCTION
    
    postgres=# select foo();
    ┌─────┐
    │ foo │
    ╞═════╡
    │  30 │
    └─────┘
    (1 row)
    

答案 1 :(得分:0)

您编写了PL / PgSQL代码,但将其标记为LANGUAGE SQL。如果您正在编写pl / pgsql函数,请使用LANGUAGE plpgsql

答案 2 :(得分:0)

您可以在过程结束时尝试指定语言 $$ 语言plpgsql;