Advertisement
Guest User

Untitled

a guest
Apr 19th, 2018
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
T-SQL 4.27 KB | None | 0 0
  1. --DROP PROCEDURE ImportDrogi
  2.  
  3. CREATE PROCEDURE ImportDrogi(@filePath NVARCHAR(MAX), @Punkty INTEGER, @PunktyGraniczne INTEGER, @PunktyReferencyjne INTEGER, @Obiekty INTEGER, @Pliki INTEGER) AS
  4.  
  5. DECLARE @xml XML
  6. DECLARE @COMMAND NVARCHAR(MAX)
  7. DECLARE @PARAM_DEF NVARCHAR(500)
  8. DECLARE @FILEVAR NVARCHAR(MAX)
  9. DECLARE @XML_OUT XML
  10.  
  11. SET @FILEVAR = @filePath
  12. SET @PARAM_DEF = N'@XML_FILE NVARCHAR(MAX), @XML_OUT XML OUTPUT'
  13.  
  14. SET @COMMAND = N'SELECT @XML_OUT = BulkColumn FROM OPENROWSET(BULK ''' +  @filePath + ''', SINGLE_BLOB) ROW_SET';
  15.  
  16. EXEC sp_executesql @COMMAND, @PARAM_DEF, @XML_FILE = @FILEVAR, @XML_OUT = @xml OUTPUT;
  17.  
  18. DECLARE @DrogiIdentity TABLE
  19. (
  20.     new_ID integer,
  21.     old_ID integer
  22. )
  23.  
  24. MERGE Drogi AS T
  25. USING (
  26.     SELECT  t.c.value('(ID)[1]','integer') AS ID,
  27.             t.c.value('(Numer)[1]','nvarchar(50)') AS Numer,
  28.             t.c.value('(Data)[1]','datetime') AS Data,
  29.             t.c.value('(Uwagi)[1]','nvarchar(max)') AS Uwagi,
  30.             t.c.value('(SciezkaGPS)[1]','nvarchar(max)') AS SciezkaGPS,
  31.             t.c.value('(TypSciezki)[1]','integer') AS TypSciezki,
  32.             t.c.value('(VideoP)[1]','nvarchar(max)') AS VideoP,
  33.             t.c.value('(VideoT)[1]','nvarchar(max)') AS VideoT,
  34.             t.c.value('(VideoL)[1]','nvarchar(max)') AS VideoL,
  35.             t.c.value('(VideoPr)[1]','nvarchar(max)') AS VideoPr,
  36.  
  37.             t.c.value('(kZakonczenie)[1]','integer') AS kZakonczenie,
  38.             t.c.value('(kOpoznienie)[1]','integer') AS kOpoznienie,
  39.             t.c.value('(kPrzesuniecie)[1]','integer') AS kPrzesuniecie,
  40.             t.c.value('(kGlobalny)[1]','real') AS kGlobalny,
  41.  
  42.             ISNULL(t.c.value('(kZakonczenieT)[1]','integer'), 0) AS kZakonczenieT,
  43.             ISNULL(t.c.value('(kOpoznienieT)[1]','integer'), 0) AS kOpoznienieT,
  44.             ISNULL(t.c.value('(kPrzesuniecieT)[1]','integer'), 0) AS kPrzesuniecieT,
  45.             ISNULL(t.c.value('(kGlobalnyT)[1]','real'), 0) AS kGlobalnyT,
  46.  
  47.             ISNULL(t.c.value('(kZakonczenieL)[1]','integer'), 0) AS kZakonczenieL,
  48.             ISNULL(t.c.value('(kOpoznienieL)[1]','integer'), 0) AS kOpoznienieL,
  49.             ISNULL(t.c.value('(kPrzesuniecieL)[1]','integer'), 0) AS kPrzesuniecieL,
  50.             ISNULL(t.c.value('(kGlobalnyL)[1]','real'), 0) AS kGlobalnyL,
  51.  
  52.             ISNULL(t.c.value('(kZakonczenieP)[1]','integer'), 0) AS kZakonczenieP,
  53.             ISNULL(t.c.value('(kOpoznienieP)[1]','integer'), 0) AS kOpoznienieP,
  54.             ISNULL(t.c.value('(kPrzesuniecieP)[1]','integer'), 0) AS kPrzesuniecieP,
  55.             ISNULL(t.c.value('(kGlobalnyP)[1]','real'), 0) AS kGlobalnyP
  56.  
  57.     FROM    @xml.nodes('XML/Drogi') t(c)
  58. ) AS S
  59. ON 0 = 1
  60. WHEN NOT MATCHED BY TARGET THEN
  61.     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 )
  62.     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 )
  63. OUTPUT inserted.ID, S.ID INTO @DrogiIdentity(new_ID, old_ID);
  64.  
  65. IF(@Punkty = 1)
  66. BEGIN
  67.     DECLARE @PunktyIdentity TABLE
  68.     (
  69.         new_ID integer,
  70.         old_ID integer
  71.     )
  72.  
  73.     MERGE Punkty AS T
  74.     USING (
  75.         SELECT  
  76.             D.new_ID AS DroID,
  77.             Item.n.value('(ID)[1]','integer') AS ID,
  78.             Item.n.value('(Len)[1]','real') AS Len,
  79.             Item.n.value('(Lat)[1]','real') AS Lat,
  80.             Item.n.value('(Wysokosc)[1]','real') AS Wysokosc,
  81.             Item.n.value('(Kilometr)[1]','real') AS Kilometr,
  82.             Item.n.value('(PoprzedniKM)[1]','real') AS PoprzedniKM,
  83.             Item.n.value('(NastepnyKM)[1]','real') AS NastepnyKM,
  84.             Item.n.value('(DataPomiaru)[1]','datetime') AS DataPomiaru,
  85.             Item.n.value('(Czas)[1]','real') AS Czas,
  86.             Item.n.value('(Aktywny)[1]','integer') AS Aktywny
  87.     FROM    @xml.nodes('XML/Drogi') t(n)
  88.         CROSS APPLY t.n.nodes('./Punkty') AS Item(n)
  89.         JOIN @DrogiIdentity D ON D.Old_ID = t.n.value('./ID[1]','integer')
  90.  
  91.     ) AS S
  92.     ON 0 = 1
  93.     WHEN NOT MATCHED BY TARGET THEN
  94.         INSERT (DroID, Len, Lat, Wysokosc, Kilometr, PoprzedniKM, NastepnyKM, DataPomiaru, Czas, Aktywny )
  95.         VALUES (DroID, Len, Lat, Wysokosc, Kilometr, PoprzedniKM, NastepnyKM, DataPomiaru, Czas, Aktywny )
  96.     OUTPUT inserted.ID, S.ID INTO @PunktyIdentity(new_ID, old_ID);
  97. END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement