Har följande: Ja. kanon, tack, en liten funderare bara, går det istället för att lägga in xml koden direkt, länka in xml filen istället, dvs man anger sökvägen dit xml filen ligger?? Ja.hämta ut och lägga in
xml-fil (anv_1.xml):
<code>
<anvandare>
<namn>Test</namn>
<adress>Testgatan</adress>
<postnummer>12345</postnummer>
<ort>Test</ort>
</anvandare>
</code>
Är det möjligt att diret i en SP? göra en INSERT till tabellen Användare med datan i xml-filen?
Hur får man isf ut varje nod i xml filen för att kunna göra en insert?
anv. MSSQL
Tacksam för all hjälp Sv: hämta ut och lägga in
Här är ett exempel med tabell och insert.
Klistra in och provkör.
<code>
CREATE TABLE Användare
(
namn varchar(50),
adress varchar(50),
postnummer varchar(10),
ort varchar(75)
);
DECLARE @idoc int;
DECLARE @doc varchar(8000);
SET @doc = '<anvandare>
<namn>Test</namn>
<adress>Testgatan</adress>
<postnummer>12345</postnummer>
<ort>Test</ort>
</anvandare>';
EXEC sp_xml_preparedocument @idoc OUTPUT, @doc;
INSERT INTO Användare
SELECT *
FROM OPENXML (@idoc, '/anvandare')
WITH
(
namn varchar(50) 'namn',
adress varchar(50) 'adress',
postnummer varchar(10) 'postnummer',
ort varchar(75) 'ort'
);
EXEC sp_xml_removedocument @idoc;
SELECT * FROM Användare;
DROP TABLE Användare;
</code>
/HåkanSv:hämta ut och lägga in
Sv: hämta ut och lägga in
Variabeln @path kan då bli en inparameter i en procedur.
<code>
CREATE TABLE Användare
(
namn varchar(50),
adress varchar(50),
postnummer varchar(10),
ort varchar(75)
);
DECLARE @path varchar(150);
DECLARE @Query AS nvarchar(max);
DECLARE @idoc int;
DECLARE @doc xml;
SET @path = 'C:\myxml.xml';
SET @Query = N'SELECT @doc = CAST(bulkcolumn AS XML) FROM OPENROWSET(BULK ''' + @path + ''', SINGLE_BLOB) AS XmlData';
EXEC sp_executesql @Query, N'@doc AS xml OUTPUT', @doc OUTPUT;
EXEC sp_xml_preparedocument @idoc OUTPUT, @doc;
INSERT INTO Användare
SELECT *
FROM OPENXML (@idoc, '/anvandare')
WITH
(
namn varchar(50) 'namn',
adress varchar(50) 'adress',
postnummer varchar(10) 'postnummer',
ort varchar(75) 'ort'
);
EXEC sp_xml_removedocument @idoc;
SELECT * FROM Användare;
DROP TABLE Användare;
</code>
/Håkan