-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathSQLQuery_29.sql
93 lines (68 loc) · 2.02 KB
/
SQLQuery_29.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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
USE master
GO
CREATE DATABASE cursores
GO
USE cursores
GO
CREATE TABLE cursos
(
codigo INT NOT NULL IDENTITY(1,1),
nome VARCHAR(150) NOT NULL,
duracao INT NOT NULL
PRIMARY KEY(codigo)
)
GO
CREATE TABLE disciplinas
(
codigo INT NOT NULL IDENTITY(1,1),
nome VARCHAR(150) NOT NULL,
carga_horaria INT NOT NULL
PRIMARY KEY(codigo)
)
GO
CREATE TABLE disciplinas_cursos
(
codigo_d INT NOT NULL,
codigo_c INT NOT NULL
FOREIGN KEY(codigo_d) REFERENCES disciplinas (codigo),
FOREIGN KEY(codigo_c) REFERENCES cursos (codigo),
PRIMARY KEY(codigo_d, codigo_c)
)
GO
CREATE FUNCTION fn_visualizar_informacao_do_curso(@codigo INT)
RETURNS @tabela TABLE(
codigo_disciplina INT,
nome_disciplina VARCHAR(100),
carga_horaria INT,
nome_curso VARCHAR(100)
)
AS
BEGIN
DECLARE @codigo_disciplina INT,
@nome_disciplina VARCHAR(50),
@carga_horaria INT,
@nome_curso VARCHAR(100)
DECLARE cur CURSOR FOR
SELECT dp.codigo, dp.nome, dp.carga_horaria, cr.nome
FROM cursos cr, disciplinas dp, disciplinas_cursos dc
WHERE dc.codigo_c = cr.codigo AND dc.codigo_d = dp.codigo
AND cr.codigo = @codigo
OPEN cur
FETCH NEXT FROM cur INTO @codigo_disciplina, @nome_disciplina, @carga_horaria, @nome_curso
WHILE @@FETCH_STATUS = 0
BEGIN
INSERT INTO @tabela VALUES
(@codigo_disciplina, @nome_disciplina, @carga_horaria, @nome_curso)
FETCH NEXT FROM cur INTO @codigo_disciplina, @nome_disciplina, @carga_horaria, @nome_curso
END
CLOSE cur
DEALLOCATE cur
RETURN
END
GO
SELECT * FROM fn_visualizar_informacao_do_curso(1)
GO
SELECT dp.codigo, dp.nome, dp.carga_horaria, cr.nome
FROM cursos cr, disciplinas dp, disciplinas_cursos dc
WHERE dc.codigo_c = cr.codigo AND dc.codigo_d = dp.codigo
AND cr.codigo = 1