ERROR: syntax error at or near "site" in PostgreSQL

ERROR: syntax error at or near "site" in PostgreSQL

我正在创建一个存储过程,它将接受数组或记录作为参数。

  CREATE TYPE site AS(
  siteid  integer,
  packageid integer,
  status  text 
);

 CREATE OR REPLACE FUNCTION packageinfo(IN
info  site[]
)RETURNS VARCHAR  AS $$
DECLARE
    info_element  site;
BEGIN
    FOREACH info_element IN ARRAY info
    LOOP
        INSERT INTO sitepackage(
            siteid,
            packageid,
            status
        ) VALUES(
            info_element.siteid,
            info_element.packageid,
            info_element.status
        );
    END LOOP;
    RETURN 'OK';
END;
$$ LANGUAGE sql;

但它给出了一个 错误:"site" 处或附近的语法错误 第 11 行:info_element 站点;

使用语句 language SQL 您将函数定义为 SQL 函数。 DECLARE 块是 PL/pgSQL 函数结构的一部分,因此您必须使用 LANGUAGE plpgsql.

创建函数

文档中的更多信息: