Function Postgresql 9.x:从函数返回自定义类型

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

我尝试从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 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;