2010-10-26 58 views
1

在MS SQL的XML字符串我有以下代碼:如何解析了在Postgres

ALTER PROCEDURE [dbo].[xmlDictamen_Alta] 
    @Xml text 
as begin 

declare @Id   integer 
declare @DictamenId numeric(18,0) 
declare @DocumentoId numeric(18,0) 
declare @Descripcion varchar(300) 

begin 

    set nocount on 
    exec dbo.sp_xml_preparedocument @Id output, @Xml 

    select 
     @DocumentId = DocumentId, 
     @Description = IsNull(Description, ''), 
    from 
    OpenXml(@IdXml, '/Parameter', 2) with (
    DocumentId  numeric(18,0), 
    Description  varchar(300) 
    ) 

    exec dbo.sp_xml_removedocument @IdXml 


/* 
execute xmlDictamen_Alta 
' 
    <Parameter> 
     <DocumentId>1328</DocumentId> 
     <Description>Descripcion</Description> 
    </Parameter> 
' 
*/ 

你會如何端口這些存儲過程來Postgres的???

回答

2

在PostgreSQl中,xml函數很弱。但是您可以使用plperU過程來執行此操作。

create or replace function proc_parse_xml(xml text) return setof tp_docs as $$ 

use XML::DOM; 

my $pr = new XML::DOM::Parser; 
my $xmldocs = $pr->parse(xml); 

...... 

return; 
$$ language plperlU;