MariaDB - Problema con procedimiento, no se guarda

 
Vista:

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
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder