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文本;
我该如何改变?
答案 0 :(得分: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;