
PostgreSql y XML
Publicado por Mauricio (2 intervenciones) el 29/09/2014 19:03:46
Buen día.
Estoy empezando con PostgreSql, tengo instalada la versión 9.3.5, compiled by Visual C++ build 1600, 32-bit, sobre W7
Necesito hacer una función que reciba varios parámetros, entre ellos un xml.
Conozco Sql Server, voy a transcribir un pequeño ejemplo donde preguntare las equivalencias de postgreSql, espero contar con su ayuda.
Estoy trabajado con Sql Manager y cuando declaro una variable tipo xml en el Editor Sql me marca este error.
ERROR: error de sintaxis en o cerca de «XML»
LINE 1: Declare cxml XML;
Este es el código
Declare cxml XML;
Como declara una variable tipo xml?, lo necesito para hacer pruebas.
Hay algo de especial para llamar a una función que reciba una variable xml?
Busque información en la web pero no encuentro algo que me diga que se puede trabajar de esta manera en PostgreSql, como puedo hacerlo?
Pueden recomendar algún link en español donde pueda ver ejemplos?
Saludos.
Mauricio
Estoy empezando con PostgreSql, tengo instalada la versión 9.3.5, compiled by Visual C++ build 1600, 32-bit, sobre W7
Necesito hacer una función que reciba varios parámetros, entre ellos un xml.
Conozco Sql Server, voy a transcribir un pequeño ejemplo donde preguntare las equivalencias de postgreSql, espero contar con su ayuda.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
Create Procedure [Cnt].[Asiento_spI] @tiMovTipId Int, @tdFecha Date, @cNota nVarchar(100), @Detalle xml, @iKeyId Int = null Out
As
Set Nocount On
Begin Try
/*Existe variables tipo tabla?
Necesito trabajar con estas variables o algo parecido, realizo varios procesos con esta data.
*/
Declare @tDetalle Table (ictaid Int, ndebe Decimal(18,2), nHaber Decimal(18,2), cNota nVarChar(70))
/*inserto los registros almacenados en el Xml en la variable tipo table*/
Insert Into @tDetalle
SELECT
p.x.value('(ictaid/text())[1]', 'int') AS iCtaId,
p.x.value('(ndebe/text())[1]', 'Decimal (18,2)') AS nDebe,
p.x.value('(nhaber/text())[1]', 'Decimal (18,2)') AS nHaber,
p.x.value('(cnota/text())[1]', 'nvarchar(70)') AS cNota
FROM
@Detalle.nodes('/VFPData/rs') AS P(x)
Declare @iNumero Int
Begin Transaction
--Estoy llamando a un sp que trabaja con un objeto sequense, muy similar a postgreSql no tengo problema
Exec Cnt.AsiCabIdDispenser_spU @iKeyNext = @iKeyId Out ;
--Numero de transacción
Exec App.MTYSec_spUI @tiMovTipId, @iKeyNext = @iNumero Out
INSERT INTO Cnt.AsiCab
(iAsiCId, iMovTipId, iNumero, cNota, dFecha)
VALUES
(@iKeyId, @tiMovTipId, @iNumero, @cNota, @tdFecha);
Insert Into Cnt.AsiDet
(iAsiCId, iCtaId, nDebe, nHaber, cNota)
SELECT
@iKeyId, ictaid, ndebe, nhaber, cnota
FROM
@tDetalle;
-- Este Update no va, pero es un ejemplo de porque necesito almacenar la data a una variable de este tipo.
Update Cnt.Saldos
Set nsaldo = nsaldo + d.debe
From cnt.Saldos s Inner Join @tDetalle d on s.ictaid = d.ictaid;
Commit Transaction
End try
Begin Catch
if @@TRANCOUNT > 0
Rollback Transaction;
Throw;
end Catch
Estoy trabajado con Sql Manager y cuando declaro una variable tipo xml en el Editor Sql me marca este error.
ERROR: error de sintaxis en o cerca de «XML»
LINE 1: Declare cxml XML;
Este es el código
Declare cxml XML;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
cxml = '<?xml version = "1.0" encoding="Windows-1252" standalone="yes"?>
<VFPData>
<rs>
<ictaid>12</ictaid>
<ndebe>12.00</ndebe>
<nhaber>0</nhaber>
<cnota>pago</cnota>
</rs>
<rs>
<ictaid>345</ictaid>
<ndebe>0</ndebe>
<nhaber>10.00</nhaber>
<cnota/>
</rs>
</VFPData>';
Como declara una variable tipo xml?, lo necesito para hacer pruebas.
Hay algo de especial para llamar a una función que reciba una variable xml?
Busque información en la web pero no encuentro algo que me diga que se puede trabajar de esta manera en PostgreSql, como puedo hacerlo?
Pueden recomendar algún link en español donde pueda ver ejemplos?
Saludos.
Mauricio
Valora esta pregunta


0