在 XML header SQL 服务器中添加 header
Add header in a XML header SQL Server
我有这个问题
Select Top 1 codigo,Numero, fecha,transportista,chofer
from VIAJES_HEADER
for xml path(''), ROOT ('CrearViaje4');
我得到了这个结果:
<CrearViaje4>
<codigo>X03VAGDVDGR</codigo>
<Numero>186714</Numero>
<fecha>2018-02-22</fecha>
<transportista>X03FGLGQDBM</transportista>
<chofer>X03FHEXAWEW</chofer>
</CrearViaje4>
如何添加固定文本?我的意思是 XML 的 header
例如:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:unis="http://unisolutions.com.ar/">
<soapenv:Header/>
<soapenv:Body>
<CrearViaje4 xmlns="http://unisolutions.com.ar/">
<codigo>X03VAGDVDGR</codigo>
<Numero>186714</Numero>
<fecha>2018-02-22</fecha>
<transportista>X03FGLGQDBM</transportista>
<chofer>X03FHEXAWEW</chofer>
</CrearViaje4>
</soapenv:Body>
</soapenv:Envelope>
</soapenv:Envelope>
像往常一样SQL服务器 XQuery FLWOR 表达式可以方便地添加 SOAP 信封和命名空间。
SQL
-- DDL and sample data population, start
DECLARE @tbl TABLE(
ID INT IDENTITY(1,1) PRIMARY KEY
, codigo VARCHAR(20)
, Numero INT
, fecha DATE
, transportista VARCHAR(20)
, chofer VARCHAR(20)
);
INSERT INTO @tbl
VALUES
('X03VAGDVDGR', 186714, '2018-02-22', 'X03FGLGQDBM', 'X03FHEXAWEW')
-- DDL and sample data population, end
DECLARE @xml XML;
;WITH XMLNAMESPACES('http://unisolutions.com.ar/' AS unis)
SELECT @xml = (
SELECT TOP(1) codigo, Numero, fecha, transportista, chofer
FROM @tbl
FOR XML PATH('row'), TYPE, ROOT ('root'));
SELECT @xml.query('
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:unis="http://unisolutions.com.ar/">
<soapenv:Header/>
<soapenv:Body>
<CrearViaje4 xmlns:unis="http://unisolutions.com.ar/">
{
for $x in /root/row
return $x/*
}</CrearViaje4>
</soapenv:Body>
</soapenv:Envelope>');
我有这个问题
Select Top 1 codigo,Numero, fecha,transportista,chofer
from VIAJES_HEADER
for xml path(''), ROOT ('CrearViaje4');
我得到了这个结果:
<CrearViaje4>
<codigo>X03VAGDVDGR</codigo>
<Numero>186714</Numero>
<fecha>2018-02-22</fecha>
<transportista>X03FGLGQDBM</transportista>
<chofer>X03FHEXAWEW</chofer>
</CrearViaje4>
如何添加固定文本?我的意思是 XML 的 header 例如:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:unis="http://unisolutions.com.ar/">
<soapenv:Header/>
<soapenv:Body>
<CrearViaje4 xmlns="http://unisolutions.com.ar/">
<codigo>X03VAGDVDGR</codigo>
<Numero>186714</Numero>
<fecha>2018-02-22</fecha>
<transportista>X03FGLGQDBM</transportista>
<chofer>X03FHEXAWEW</chofer>
</CrearViaje4>
</soapenv:Body>
</soapenv:Envelope>
</soapenv:Envelope>
像往常一样SQL服务器 XQuery FLWOR 表达式可以方便地添加 SOAP 信封和命名空间。
SQL
-- DDL and sample data population, start
DECLARE @tbl TABLE(
ID INT IDENTITY(1,1) PRIMARY KEY
, codigo VARCHAR(20)
, Numero INT
, fecha DATE
, transportista VARCHAR(20)
, chofer VARCHAR(20)
);
INSERT INTO @tbl
VALUES
('X03VAGDVDGR', 186714, '2018-02-22', 'X03FGLGQDBM', 'X03FHEXAWEW')
-- DDL and sample data population, end
DECLARE @xml XML;
;WITH XMLNAMESPACES('http://unisolutions.com.ar/' AS unis)
SELECT @xml = (
SELECT TOP(1) codigo, Numero, fecha, transportista, chofer
FROM @tbl
FOR XML PATH('row'), TYPE, ROOT ('root'));
SELECT @xml.query('
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:unis="http://unisolutions.com.ar/">
<soapenv:Header/>
<soapenv:Body>
<CrearViaje4 xmlns:unis="http://unisolutions.com.ar/">
{
for $x in /root/row
return $x/*
}</CrearViaje4>
</soapenv:Body>
</soapenv:Envelope>');