Ejercicios de Procedimientos Almacenados en SQL Server
Ejercicios de Procedimientos Almacenados en SQL Server
1
2
3
4
5
6
7
EXEC INSERTA_EMPLEADO
7895,'SUAREZ','EMPLEADO',0,'26/05/2015',16000,0,20
EXEC NUMEMP_DEPT 30
1
2
1
2
1
2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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
IF (@CONSULTA IS NULL)
BEGIN
PRINT 'EL VALOR INTRODUCIDO NO ES UN
HOSPITAL, SALA, TURNO O FUNCIN: ' + @VALOR
PRINT 'VERIFIQUE LOS DATOS INTRODUCIDOS'
END
ELSE
BEGIN
PRINT 'FUNCION'
SELECT FUNCION AS [TURNO]
,AVG(SALARIO) AS [MEDIA]
,COUNT(EMPLEADO_NO) AS [N EMPLEADOS]
,SUM(SALARIO) AS [SUMA] FROM PLANTILLA
GROUP BY FUNCION
HAVING FUNCION = @VALOR
SELECT EMPLEADO_NO AS [N EMPLEADO]
,APELLIDO, SALARIO, FUNCION
FROM PLANTILLA
WHERE FUNCION = @VALOR
END
END
ELSE
BEGIN
PRINT 'TURNO'
SELECT T AS [TURNO]
,AVG(SALARIO) AS [MEDIA]
,COUNT(EMPLEADO_NO) AS [N EMPLEADOS]
,SUM(SALARIO) AS [SUMA] FROM PLANTILLA
GROUP BY T
HAVING T = @VALOR
SELECT T AS [TURNO]
,EMPLEADO_NO AS [N EMPLEADO]
,APELLIDO, SALARIO
FROM PLANTILLA
WHERE T = @VALOR
END
END
ELSE
BEGIN
PRINT 'SALA'
SELECT S.NOMBRE AS [SALA]
,AVG(P.SALARIO) AS [MEDIA]
,COUNT(P.EMPLEADO_NO) AS [N EMPLEADOS]
,SUM(P.SALARIO) AS [SUMA] FROM PLANTILLA AS P
INNER JOIN SALA AS S
ON S.HOSPITAL_COD = P.HOSPITAL_COD
GROUP BY S.NOMBRE
HAVING S.NOMBRE = @VALOR
SELECT S.NOMBRE AS [SALA]
,P.EMPLEADO_NO AS [N EMPLEADO]
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
1
,P.APELLIDO, P.SALARIO
FROM PLANTILLA AS P
INNER JOIN SALA AS S
ON S.HOSPITAL_COD = P.HOSPITAL_COD
WHERE S.NOMBRE = @VALOR
END
END
ELSE
BEGIN
PRINT 'HOSPITAL'
SELECT H.NOMBRE AS [HOSPITAL]
,AVG(P.SALARIO) AS [MEDIA]
,COUNT(P.EMPLEADO_NO) AS [N EMPLEADOS]
,SUM(P.SALARIO) AS [SUMA] FROM PLANTILLA AS P
INNER JOIN HOSPITAL AS H
ON H.HOSPITAL_COD = P.HOSPITAL_COD
GROUP BY H.NOMBRE
HAVING H.NOMBRE = @VALOR
SELECT H.NOMBRE AS [HOSPITAL]
,P.EMPLEADO_NO AS [N EMPLEADO]
,P.APELLIDO, P.SALARIO
FROM PLANTILLA AS P
INNER JOIN HOSPITAL AS H
ON H.HOSPITAL_COD = P.HOSPITAL_COD
WHERE H.NOMBRE = @VALOR
END
EXEC EMPPLANTILLA 'GENERAL'
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
1
11) Crear procedimiento que borre un empleado que coincida con los parmetros
indicados (los parmetros sern todos los campos de la tabla empleado).
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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
,@COMISION INT
,@DEPT_NO INT
AS
DECLARE @VALOR NVARCHAR(30)
SELECT @VALOR = EMP_NO
FROM EMP WHERE EMP_NO = @EMP_NO
AND APELLIDO = @APELLIDO
AND OFICIO = @OFICIO
AND DIR = @DIR
AND FECHA_ALT = @FECHA_ALT
AND SALARIO = @SALARIO
AND COMISION = @COMISION
AND DEPT_NO = @DEPT_NO
IF (@VALOR IS NULL)
BEGIN
SELECT @VALOR = EMP_NO FROM EMP WHERE EMP_NO = @EMP_NO
IF (@VALOR IS NULL)
BEGIN
PRINT 'EMPLEADO NO EXISTENTE EN LA BASE DE DATOS, VERIFIQUE LOS
DATOS DEL SR ' + @APELLIDO
END
ELSE
BEGIN
PRINT 'DATOS INTRODUCIDOS ERRONEAMENTE: '
PRINT CAST(@EMP_NO AS NVARCHAR(4)) + ' ' + @APELLIDO + ' '
+ @OFICIO + ' ' + CAST(@DIR AS NVARCHAR(4)) + ' '
+ CAST(@FECHA_ALT AS NVARCHAR(12)) + ' '
+ CAST(@SALARIO AS NVARCHAR(10)) + ' '
+ CAST(@COMISION AS NVARCHAR(10)) + ' '
+ CAST(@DEPT_NO AS NVARCHAR(4))
SELECT @EMP_NO = EMP_NO, @APELLIDO = APELLIDO
,@OFICIO = OFICIO, @DIR = DIR
,@FECHA_ALT = FECHA_ALT, @SALARIO = SALARIO
,@COMISION = COMISION, @DEPT_NO = DEPT_NO
FROM EMP WHERE EMP_NO = @VALOR
PRINT 'DATOS REALES DEL EMPLEADO: '
PRINT CAST(@EMP_NO AS NVARCHAR(4)) + ' ' + @APELLIDO + ' '
+ @OFICIO + ' ' + CAST(@DIR AS NVARCHAR(4)) + ' '
+ CAST(@FECHA_ALT AS NVARCHAR(12)) + ' '
+ CAST(@SALARIO AS NVARCHAR(10)) + ' '
+ CAST(@COMISION AS NVARCHAR(10)) + ' '
+ CAST(@DEPT_NO AS NVARCHAR(4))
END
END
ELSE
BEGIN
DELETE FROM EMP WHERE EMP_NO = @EMP_NO
AND APELLIDO = @APELLIDO
AND OFICIO = @OFICIO
AND DIR = @DIR
58
59
60
61
62
1
AND
AND
AND
AND
END
FECHA_ALT = @FECHA_ALT
SALARIO = @SALARIO
COMISION = @COMISION
DEPT_NO = @DEPT_NO
EXEC BORRAEMPLEADO
7895,'SUAREZ','EMPLEADO',0,'26/05/2015',16000,0,20
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
DATOS:'
PRINT 'SALA: ' + @SALA
PRINT 'HOSPITAL: ' + @HOSPITAL
PRINT ''