-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathSQLQuery4.sql
55 lines (55 loc) · 3.52 KB
/
SQLQuery4.sql
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
USE [DataBase]
GO
/****** Object: StoredProcedure [dbo].[ProfesoriToDiscipline] Script Date: 6/5/2022 2:51:16 AM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER procedure [dbo].[ProfesoriToDiscipline]
as
declare @nr1 int
declare @prof_id int
declare @counter int = 0
declare @disciplina_id int
declare @disciplina varchar(50)
declare @test varchar(max)
select @nr1 = count(id) from Profesori
while(@counter < @nr1)
begin
set @prof_id = (select id from Profesori order by id offset @counter rows fetch next 1 rows only)
set @test = (select Disciplina from Profesori where id=@prof_id)
if(charIndex(',',@test,0) = 0)
Begin
set @disciplina = @test
set @disciplina_id = (select id_disciplina from Discipline where denumire = @disciplina)
insert into ProfDisc
values (@prof_id,@disciplina_id)
End
else
Begin
declare @n int = 0
declare @m int = 0
declare @total int = len(@test)
while( @n < @total)
begin
if(CHARINDEX(',',@test,@n)!=0)
Begin
set @disciplina = (select SUBSTRING(p.Disciplina,@n,CharIndex(',',p.Disciplina,@n)) from Profesori p where id=@prof_id)
set @n = CharIndex(',',@test,@m) + 1
set @m = @n
set @disciplina_id = (select id_disciplina from Discipline where denumire = @disciplina)
Insert Into ProfDisc
values (@prof_id,@disciplina_id)
End
else
Begin
set @disciplina = (select Substring(p.Disciplina,@n,@total-@n+1) from Profesori p where id=@prof_id)
set @disciplina_id = (select id_disciplina from Discipline where denumire = @disciplina)
set @n = @total
Insert Into ProfDisc
values (@prof_id,@disciplina_id)
End
end
End
set @counter = @counter +1
end