Function Postgresql 9.x:从函数返回自定义类型
我尝试从PostgreSQL函数返回自定义类型,如下所示:Function Postgresql 9.x:从函数返回自定义类型,function,types,postgresql-9.1,Function,Types,Postgresql 9.1,我尝试从PostgreSQL函数返回自定义类型,如下所示: CREATE TYPE myType as ( "Name" character varying ,"Surname" Text ); CREATE OR REPLACE FUNCTION public.xml_to_type(inputXml xml) RETURNS SETOF myType AS $BODY$ DECLARE xml_content myType; BEGIN FOR
CREATE TYPE myType as
(
"Name" character varying
,"Surname" Text
);
CREATE OR REPLACE FUNCTION public.xml_to_type(inputXml xml)
RETURNS SETOF myType AS
$BODY$
DECLARE
xml_content myType;
BEGIN
FOR xml_content in
SELECT
(xpath('//Name/text()',testColumn))[1]::text::character varying as "Name"
,(xpath('//Surname/text()',testColumn))[1]::text::text as "Surname"
FROM unnest(xpath('//myNodes/node',inputXml)) AS t(testColumn)
LOOP
RETURN NEXT xml_content;
END LOOP;
END;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;
通过PostgreSQL查询工具,它可以工作:
SELECT * FROM xml_to_type('<myNodes>
<node>
<Name>Alex</Name>
<Surname>Red</Surname>
</node>
<node>
<Name>Tony</Name>
<Surname>Stark</Surname>
</node>
</myNodes>'::xml);
我得到一个例外:
ERROR: malformed array literal: "Alex"
DETAIL: Array value must start with "{" or dimension information.
有什么想法吗?返回x集合的函数不能将其结果存储到x[]类型的字段中。集合不是数组
必须使用数组\u agg:
直接从查询工具运行时显示输出。输出是两条记录,带有两个列、名称和姓氏值…显示输出。复制粘贴。姓名姓氏-----------------亚历克斯·雷德·托尼·斯塔克对于未来,通过编辑原始问题添加额外信息。从这一点,我们无法判断哪个字段是哪个等,但这就足够了。
ERROR: malformed array literal: "Alex"
DETAIL: Array value must start with "{" or dimension information.
SELECT array_agg(x) FROM xml_to_type(xmlExample) x INTO myTypeVar;