Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --DROP PROCEDURE ImportDrogi
- CREATE PROCEDURE ImportDrogi(@filePath NVARCHAR(MAX), @Punkty INTEGER, @PunktyGraniczne INTEGER, @PunktyReferencyjne INTEGER, @Obiekty INTEGER, @Pliki INTEGER) AS
- DECLARE @xml XML
- DECLARE @COMMAND NVARCHAR(MAX)
- DECLARE @PARAM_DEF NVARCHAR(500)
- DECLARE @FILEVAR NVARCHAR(MAX)
- DECLARE @XML_OUT XML
- SET @FILEVAR = @filePath
- SET @PARAM_DEF = N'@XML_FILE NVARCHAR(MAX), @XML_OUT XML OUTPUT'
- SET @COMMAND = N'SELECT @XML_OUT = BulkColumn FROM OPENROWSET(BULK ''' + @filePath + ''', SINGLE_BLOB) ROW_SET';
- EXEC sp_executesql @COMMAND, @PARAM_DEF, @XML_FILE = @FILEVAR, @XML_OUT = @xml OUTPUT;
- DECLARE @DrogiIdentity TABLE
- (
- new_ID integer,
- old_ID integer
- )
- MERGE Drogi AS T
- USING (
- SELECT t.c.value('(ID)[1]','integer') AS ID,
- t.c.value('(Numer)[1]','nvarchar(50)') AS Numer,
- t.c.value('(Data)[1]','datetime') AS Data,
- t.c.value('(Uwagi)[1]','nvarchar(max)') AS Uwagi,
- t.c.value('(SciezkaGPS)[1]','nvarchar(max)') AS SciezkaGPS,
- t.c.value('(TypSciezki)[1]','integer') AS TypSciezki,
- t.c.value('(VideoP)[1]','nvarchar(max)') AS VideoP,
- t.c.value('(VideoT)[1]','nvarchar(max)') AS VideoT,
- t.c.value('(VideoL)[1]','nvarchar(max)') AS VideoL,
- t.c.value('(VideoPr)[1]','nvarchar(max)') AS VideoPr,
- t.c.value('(kZakonczenie)[1]','integer') AS kZakonczenie,
- t.c.value('(kOpoznienie)[1]','integer') AS kOpoznienie,
- t.c.value('(kPrzesuniecie)[1]','integer') AS kPrzesuniecie,
- t.c.value('(kGlobalny)[1]','real') AS kGlobalny,
- ISNULL(t.c.value('(kZakonczenieT)[1]','integer'), 0) AS kZakonczenieT,
- ISNULL(t.c.value('(kOpoznienieT)[1]','integer'), 0) AS kOpoznienieT,
- ISNULL(t.c.value('(kPrzesuniecieT)[1]','integer'), 0) AS kPrzesuniecieT,
- ISNULL(t.c.value('(kGlobalnyT)[1]','real'), 0) AS kGlobalnyT,
- ISNULL(t.c.value('(kZakonczenieL)[1]','integer'), 0) AS kZakonczenieL,
- ISNULL(t.c.value('(kOpoznienieL)[1]','integer'), 0) AS kOpoznienieL,
- ISNULL(t.c.value('(kPrzesuniecieL)[1]','integer'), 0) AS kPrzesuniecieL,
- ISNULL(t.c.value('(kGlobalnyL)[1]','real'), 0) AS kGlobalnyL,
- ISNULL(t.c.value('(kZakonczenieP)[1]','integer'), 0) AS kZakonczenieP,
- ISNULL(t.c.value('(kOpoznienieP)[1]','integer'), 0) AS kOpoznienieP,
- ISNULL(t.c.value('(kPrzesuniecieP)[1]','integer'), 0) AS kPrzesuniecieP,
- ISNULL(t.c.value('(kGlobalnyP)[1]','real'), 0) AS kGlobalnyP
- FROM @xml.nodes('XML/Drogi') t(c)
- ) AS S
- ON 0 = 1
- WHEN NOT MATCHED BY TARGET THEN
- INSERT (Numer, Data, Uwagi, SciezkaGPS, TypSciezki, VideoP, VideoT, VideoL, VideoPr, kZakonczenie, kOpoznienie, kPrzesuniecie, kGlobalny, kZakonczenieT, kOpoznienieT, kPrzesuniecieT, kGlobalnyT, kZakonczenieL, kOpoznienieL, kPrzesuniecieL, kGlobalnyL, kZakonczenieP, kOpoznienieP, kPrzesuniecieP, kGlobalnyP )
- VALUES (Numer, Data, Uwagi, SciezkaGPS, TypSciezki, VideoP, VideoT, VideoL, VideoPr, kZakonczenie, kOpoznienie, kPrzesuniecie, kGlobalny, kZakonczenieT, kOpoznienieT, kPrzesuniecieT, kGlobalnyT, kZakonczenieL, kOpoznienieL, kPrzesuniecieL, kGlobalnyL, kZakonczenieP, kOpoznienieP, kPrzesuniecieP, kGlobalnyP )
- OUTPUT inserted.ID, S.ID INTO @DrogiIdentity(new_ID, old_ID);
- IF(@Punkty = 1)
- BEGIN
- DECLARE @PunktyIdentity TABLE
- (
- new_ID integer,
- old_ID integer
- )
- MERGE Punkty AS T
- USING (
- SELECT
- D.new_ID AS DroID,
- Item.n.value('(ID)[1]','integer') AS ID,
- Item.n.value('(Len)[1]','real') AS Len,
- Item.n.value('(Lat)[1]','real') AS Lat,
- Item.n.value('(Wysokosc)[1]','real') AS Wysokosc,
- Item.n.value('(Kilometr)[1]','real') AS Kilometr,
- Item.n.value('(PoprzedniKM)[1]','real') AS PoprzedniKM,
- Item.n.value('(NastepnyKM)[1]','real') AS NastepnyKM,
- Item.n.value('(DataPomiaru)[1]','datetime') AS DataPomiaru,
- Item.n.value('(Czas)[1]','real') AS Czas,
- Item.n.value('(Aktywny)[1]','integer') AS Aktywny
- FROM @xml.nodes('XML/Drogi') t(n)
- CROSS APPLY t.n.nodes('./Punkty') AS Item(n)
- JOIN @DrogiIdentity D ON D.Old_ID = t.n.value('./ID[1]','integer')
- ) AS S
- ON 0 = 1
- WHEN NOT MATCHED BY TARGET THEN
- INSERT (DroID, Len, Lat, Wysokosc, Kilometr, PoprzedniKM, NastepnyKM, DataPomiaru, Czas, Aktywny )
- VALUES (DroID, Len, Lat, Wysokosc, Kilometr, PoprzedniKM, NastepnyKM, DataPomiaru, Czas, Aktywny )
- OUTPUT inserted.ID, S.ID INTO @PunktyIdentity(new_ID, old_ID);
- END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement