Как я могу получить данные XML в правых таблицах в моей базе данных? У меня есть следующий код:Вставка данных XML в базу данных SQL
DECLARE @XML XML = '<reservering reserveringsnummer="1" status="aanvraag">
<park>Nationaal park Oosterschelde</park>
<accomodatie>Appartement</accomodatie>
<aantalBezoekers>2</aantalBezoekers>
<startdatum>2013-12-12</startdatum>
<einddatum>2013-12-20</einddatum>
<voorkeur>Rustige plaats</voorkeur>
<opties>
<optie>arrangement</optie>
</opties>
<klant>
<aanhef>De heer</aanhef>
<naam>voornaam</naam>
<adres>adres</adres>
<postcode>postcode</postcode>
<email>[email protected]</email>
<rekeningnummer></rekeningnummer>
</klant>
</reservering>'
'SELECT
ReserveringNummer = Reservering.value('@reserveringsnummer', 'int'),
ReserveringStatus = Reservering.value('@status', 'varchar(50)'),
Park = Reservering.value('(park)[1]', 'varchar(50)'),
Accomodatie = Reservering.value('(accomodatie)[1]', 'varchar(50)'),
AantalBezoekers = Reservering.value('(aantalBezoekers)[1]', 'int'),
StartDatum = Reservering.value('(startdatum)[1]', 'date'),
EindDatum = Reservering.value('(einddatum)[1]', 'date'),
Voorkeur = Reservering.value('(voorkeur)[1]', 'varchar(50)'),
Opties = Opties.value('(optie)[1]', 'varchar(50)'),
Aanhef = Klant.value('(aanhef)[1]', 'varchar(50)'),
KlantNaam = Klant.value('(naam)[1]', 'varchar(50)'),
Adres = Klant.value('(adres)[1]', 'varchar(50)'),
Postcode = Klant.value('(postcode)[1]', 'varchar(50)'),
Email = Klant.value('(email)[1]', 'varchar(50)'),
Rekeningnummer = Klant.value('(rekeningnummer)[1]', 'varchar(50)')
FROM
@XML.nodes('/reservering') AS ReserveringTable(Reservering),
@XML.nodes('/reservering/opties') AS OptiesTable(Opties),
@XML.nodes('/reservering/klant') AS KlantTable(Klant)
INSERT INTO dbo.PRODUCT(naam)
VALUES (Opties)
SELECT SCOPE_IDENTITY() AS ProductID;
INSERT INTO dbo.WONING(naam)
VALUES (Accomodatie)
SELECT SCOPE_IDENTITY() AS WoningID;
INSERT dbo.KLANT(aanhef, naam, adres, postcode, emailadres, rekeningnummer)
VALUES (Aanhef, KlantNaam, Adres, Postcode, Email, Rekeningnummer)
SELECT SCOPE_IDENTITY() AS KlantID;
INSERT INTO dbo.RESERVERING(reserveringsnummer, status, van_datum, tot_datum, woning_id, product, voorkeur, prijs, klant, aantal_bezoekers)
VALUES (ReserveringNummer, ReserveringStatus, StartDatum, EindDatum, WoningID, ProductID, Voorkeur, Prijs, KlantID, AantalBezoekers)
Как вы можете видеть, я также пытаюсь получить продукт и Woning идентификаторов в мою RESERVERING таблицу, это правильный способ сделать это? Прямо сейчас программа дает мне ошибку: недопустимое имя столбца «columnname», где значение столбца - это значение. Это дает мне ту же ошибку для всех значений, определенных в моей инструкции INSERT.
Какую базу данных вы используете? – alex
SQL Server 2008 R2 и я работаю с Microsoft SQL Server Management Studio – user2237168