· 7 years ago · Sep 18, 2018, 01:26 PM
1CREATE TYPE studentPrzedmiot AS TABLE (
2 ID int IDENTITY(1,1),
3 NrIndeksu varchar(20),
4 kodyPrzedmiotow nvarchar(200)
5)
6
7DECLARE @studentSubject studentPrzedmiot;
8INSERT INTO @studentSubject VALUES ('s1234', 'ZFP PPJ IDH'), ('s15428', 'ZFP PPJ IDH');
9SELECT * FROM @studentSubject
10
11
12create procedure Import_Przedmiotow
13AS
14
15DECLARE @MinId=(SELECT MIN(Id) FROM @studentSubject);
16DECLARE @MaxId=(SELECT MAX(Id) FROM @studentSubject);
17
18WHILE(@MinId<=@MaxId)
19 BEGIN
20
21 DECLARE @NrIndeksu VARCHAR(50);
22 DECLARE @KodyPrzedmiotow VARCHAR(100);
23
24 SELECT @NrIndeksu=Indeks, @KodyPrzedmiotow=kodyPrzedmiotow FROM @studentSubject
25 WHERE Id=@MinId;
26
27 --1. Student po nr indeksu
28
29 DECLARE @IdOsoba int =(SELECT s.IdOsoba FROM [dbo].[Student] s WHERE s.Konto_AD=@NrIndeksu);
30
31 --2. Wpis na semestr
32
33 DECLARE @IdWpisNaSemestr int
34 DECLARE @IdStudia int;
35
36 SELECT @IdWpisNaSemestr=wns.IdWpis_na_semestr, @IdStudia=wns.IdStudia
37 FROM [dbo].[Wpis_na_semestr] wns
38 WHERE wns.IdOsoba=@IdOsoba AND wns.IdSemestr=51);
39
40 --3. Przedmiot po kodzie
41
42 --tabelka dla kodow
43 DECLARE @Kody TABLE
44 (
45 IdKod int identity(1,1),
46 Kod nvarchar(20)
47 );
48
49 INSERT INTO @Kody
50 SELECT value
51 FROM string_split(@KodyPrzedmiotow, ' ')
52 WHERE rtrim(value) <> '';
53 --------------
54
55 DECLARE @i int = (SELECT Min(IdKod) FROM @Kody k);
56 DECLARE @limit int = (SELECT Max(IdKod) FROM @Kody k);
57
58 WHILE @i <= @limit
59 BEGIN
60 --select subject code one by one
61 DECLARE @IdPrzedmiot int = (SELECT p.IdPrzedmiot
62 FROM [dbo].[Przedmiot] p
63 WHERE p.Kod = (SELECT k.Kod
64 FROM @Kody k
65 WHERE k.IdKod=@i));
66
67 --4. Szukamy programu nauczania idsemestr + idstudia + idprzedmiot
68 DECLARE @IdProgram int = (SELECT pn.IdProgram_nauczania
69 from [dbo].[Program_nauczania] pn
70 WHERE pn.IdPrzedmiot = @IdPrzedmiot AND pn.IdSemestr=51
71 AND pn.IdStudia = @IdStudia);
72
73 --5. Sprawdzamy czy jest istnieje rekord dla studenta w Wybor_przedmiotu
74 IF NOT EXISTS (SELECT 1 FROM [dbo].[Wybor_przedmiotu] wp
75 WHERE wp.IdWpis_na_semestr=@IdWpisNaSemestr AND wp.IdProgram_nauczania=@IdProgram)
76
77 --6. Jesli nie istnieje - dodajemy rekord w tabeli Wybor_przedmiotu
78 INSERT INTO [dbo].[Wybor_przedmiotu]
79 (
80 IdWpis_na_semestr,
81 IdProgram_nauczania
82 )
83 VALUES
84 (
85 @IdWpisNaSemestr,
86 @IdProgram
87 )
88 ELSE
89 CONTINUE
90 SET @i=@i+1;
91 END;
92
93 SET @MinId=@MinId+1;
94END;