Problema con procedimiento, no se guarda
Publicado por José Adolfo Esquivel Reyes (1 intervención) el 11/01/2017 02:56:46
No puedo guardar el procedimiento, ya intente mas de una ocasion y realice modificaciones pero aun sigo sin poder generarlo, ayuda por favor :(.
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
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
DELIMITER $$
#Procedimiento para verificar alumnos aprobados
CREATE
PROCEDURE apr_alu(
IN nom_prueba VARCHAR(150),
IN categoria VARCHAR(30),
IN materia VARCHAR(30),
IN carrera VARCHAR(30),
IN universidad VARCHAR(50)
)
BEGIN
#Variables para el control del cursor y auxiliares
DECLARE
fin_row INT DEFAULT 0 ; DECLARE con_row INT DEFAULT 0 ; DECLARE l_con_tador INT DEFAULT 0 ;
#Variables del cursor recorrido
DECLARE identi INT(10) ; DECLARE nombre VARCHAR(150) ; DECLARE catego VARCHAR(30) ; DECLARE fecpru DATETIME ; DECLARE nestud VARCHAR(150) ; DECLARE cestud DECIMAL(2,1) ; DECLARE edstud VARCHAR(3) ; DECLARE materi VARCHAR(30) ; DECLARE carrer VARCHAR(30) ; DECLARE univer VARCHAR(50) ;
#Llenado de tabla temporal
#Aqui se definen los datos de quienes quiero obtener los datos y se insertan
#en una tabla temporal para que la base siga con sus datos.
#Primero genero mi tabla temporal
CREATE TEMPORARY TABLE alu_temp(
identi INT,
nombre VARCHAR(150),
catego VARCHAR(30),
fecpru DATETIME,
nestud VARCHAR(150),
cestud DECIMAL(2,1),
edstud VARCHAR(3),
materi VARCHAR(30),
carrer VARCHAR(30),
univer VARCHAR(50),
mensaj VARCHAR(30)
) ;
#Se agrego para mostrar si fue aprobatoria su calificación
#Realizo la validacion de que insertare por lo menos un registro en mi tabla temporal
SELECT COUNT
(*)
INTO
l_con_tador
FROM
db01pruebas a
WHERE
a.db01_nom_prueba = nom_prueba AND a.db01_cat_prueba = categoria AND a.db01_mat_eria = materia AND a.db01_car_rera = carrera AND a.db01_uni_vers = universidad ; IF l_con_tador > 0 THEN
#Reviso que por lo menos tenga un registro para insertar
INSERT
INTO
alu_temp
SELECT
*,
'XXXXX'
FROM
db01pruebas a
WHERE
a.db01_nom_prueba = nom_prueba AND a.db01_cat_prueba = categoria AND a.db01_mat_eria = materia AND a.db01_car_rera = carrera AND a.db01_uni_vers = universidad ;
#select* from alu_temp
#Declaro mi cursor para comenzar el recorrido
DECLARE recorrido CURSOR FOR
SELECT
identi,
nombre,
catego,
fecpru,
nestud,
cestud,
edstud,
materi,
carrer,
univer
FROM
alu_temp ;
#Revisar los registros por recorrer y tomar el error cuando se terminen
DECLARE CONTINUE HANDLER FOR NOT FOUND
SET
fin_row = 1 ;
SET
con_row = 0 ; OPEN recorrido ; r1_loop : LOOP FETCH CURSOR
INTO
ridenti,
rnombre,
rcatego,
rfecpru,
rnestud,
rcestud,
redstud,
rmateri,
rcarrer,
runiver ; IF(fin_row = 1) THEN LEAVE r1_loop ; END IF ;
#En este apartado se realiza el tratamiento para cada registro por recorrer
IF rcestud >= 8 THEN
UPDATE
alu_temp
SET
mensaj = "Aprobado"
WHERE
identi = ridenti ; ELSE
UPDATE
alu_temp
SET
mensaj = "No aprobado"
WHERE
identi = ridenti ; END IF ;
SET
con_row = con_row + 1 ; END LOOP r1_loop ; CLOSE recorrido ;
SELECT
*
FROM
alu_temp ;
#drop table alu_temp;
ELSE
#Si no hay mas de un registro por insertar termina
SELECT
'No hay registros con los parametros de entrada, intente con otros...' AS mensaje ; END IF ;
END ; $$
Valora esta pregunta


0