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



我该如何改变?

最佳答案

我看到两个问题:

  • 错误的语言规范 - PostgreSQL native 过程语言是 plpgsql
  • 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)
    
  • 关于postgresql - 当声明中出现语法错误时,declare postgresql,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36612078/

    10-12 03:05