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
.
创建函数
文档中的更多信息:
我正在创建一个存储过程,它将接受数组或记录作为参数。
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
.
文档中的更多信息: