1
00:00:04,170 --> 00:00:04,920
Hola qué tal.

2
00:00:04,920 --> 00:00:13,860
Bienvenidos a esta nueva sección que se añadió así por pedido de los usuarios que tiene que ver con

3
00:00:14,100 --> 00:00:20,570
temas muy avanzados que escapaban al alcance de nuestro curso.

4
00:00:20,580 --> 00:00:28,770
Pero qué bueno realmente yo quiero que ustedes estén conformes y voy a ir añadiendo temas conforme lo

5
00:00:28,770 --> 00:00:32,770
vayan pidiendo y me den las posibilidades de tiempo obviamente.

6
00:00:33,570 --> 00:00:41,160
Pero como estos son temas bastante importantes quise meterlos quise meterlos para que no se queden con

7
00:00:41,160 --> 00:00:42,910
sabor a que faltaba.

8
00:00:43,110 --> 00:00:48,930
Voy a explicar por qué no los metí o por qué al menos este que vamos a ver ahora que es rutinas almacenadas

9
00:00:48,960 --> 00:01:00,170
no los metí mis shikon incorporó las rutinas almacenadas a partir de la versión 5.0 .3 es algo muy nuevo

10
00:01:00,440 --> 00:01:04,820
en mi ciclo están todavía desarrollando todavía lo están perfeccionando.

11
00:01:04,820 --> 00:01:12,590
Va a haber cambios y si ustedes vienen del mundo de cinco al server o vienen del mundo de hora se van

12
00:01:12,590 --> 00:01:21,080
a encontrar con que tienen como una especie de sabor a poco porque no están tan desarrolladas y porque

13
00:01:21,080 --> 00:01:29,060
realmente hay muchas cosas que ustedes pueden hacer en esos otros motores que aquí no van a poder hacer.

14
00:01:29,210 --> 00:01:35,870
No voy a dar una lista porque realmente lo que importa ahora es que ustedes aprendan lo más fiable mente

15
00:01:35,870 --> 00:01:37,310
posible.

16
00:01:37,310 --> 00:01:39,170
Las rutinas almacenadas.

17
00:01:39,170 --> 00:01:44,780
Primero voy a explicarles qué son y después vamos a ir al detalle de cómo crearlas y qué parámetros

18
00:01:44,780 --> 00:01:52,310
y qué cosas hay que tomar en cuenta las rutinas almacenadas son pedazos de código que pueden o no contener

19
00:01:52,640 --> 00:02:00,770
código lenguaje del lenguaje SQL que se graban en el motor de base de datos y que en definitiva se crean

20
00:02:00,770 --> 00:02:04,750
por un tema de seguridad y un tema de velocidad.

21
00:02:04,790 --> 00:02:06,080
Por qué.

22
00:02:06,080 --> 00:02:13,190
Primero porque son más rápidas al estar compiladas dentro del motor son más rápidas del motor las ejecuta

23
00:02:13,190 --> 00:02:21,840
de una manera más rápida porque el motor no hace un chequeo sintaxis en el momento de ejecución.

24
00:02:21,950 --> 00:02:28,250
Si hace un chequeo de la sintaxis de que todo lo que nosotros escribamos en nuestra rutina almacenada

25
00:02:28,550 --> 00:02:32,550
esté correcto y lo hace en el momento que la creamos.

26
00:02:32,600 --> 00:02:37,910
Entonces por eso es muy importante porque en el momento de crearla si hay algo que está mal escrito

27
00:02:38,270 --> 00:02:44,750
o algún error de sintaxis el motor se va a encargar de darnos un error en el momento no nos va a dejar

28
00:02:44,750 --> 00:02:57,220
grabar nuestra rutina almacenada y además porque es importante porque mantiene nuestro código SQL todo

29
00:02:57,380 --> 00:03:03,670
nuestro manejo de base de datos de manera ofuscada hacia la vista de los curiosos.

30
00:03:03,710 --> 00:03:09,140
Cualquiera agarra nuestro código fuente de nuestro desarrollo en nuestro programa sean el lenguaje que

31
00:03:09,140 --> 00:03:16,190
sea y no va a haber nada de la base de datos sólo va a haber un llamado a una rutina que adentro hace

32
00:03:16,190 --> 00:03:21,450
muchas cosas pero no va a saber qué es lo que se hace.

33
00:03:21,470 --> 00:03:29,420
Esto es muy importante porque imagínense que hay empresas muy importantes de seguridad empresas muy

34
00:03:29,420 --> 00:03:36,230
importantes que mantienen información muy sensible que si no hicieran esto y si colocaran todas las

35
00:03:36,470 --> 00:03:46,430
sentencias SQL en el código existe forma de compilar un programa un punto ExE hay software que compila

36
00:03:46,440 --> 00:03:53,750
y cualquiera cualquier hacker puede ver el código y enterarse cómo acceder a nuestra base de datos.

37
00:03:54,080 --> 00:04:00,050
Las conexiones de la base de datos los nombres de las tablas los nombres de los campos y de esta manera

38
00:04:01,010 --> 00:04:11,260
podemos tener todo nuestro nuestra parte importante nuestro Kor nuestro Corde todo lo que hace y toda

39
00:04:11,260 --> 00:04:18,440
la parte importante de nuestro código alejada de los curiosos ese es el motivo por los cuales los bancos

40
00:04:18,470 --> 00:04:21,830
utilizan rutinas almacenadas.

41
00:04:21,860 --> 00:04:29,060
Eso es básicamente por la cual las compañías de servicios y las compañías de seguros y prácticamente

42
00:04:29,060 --> 00:04:37,840
casi todas las compañías grandes o medianas o cualquiera que quiera usarlos utilizan estor pocillos

43
00:04:37,970 --> 00:04:43,440
y por eso es tan buscada la información de cómo trabajar con ellas.

44
00:04:43,520 --> 00:04:48,170
Yo lo que he hecho he dividido esta sección que fue a pedido en tres clases.

45
00:04:48,170 --> 00:04:54,470
Podría haber hecho todo en una sola clase pero los hubiera mareado porque a mí me gusta ir de lo simple

46
00:04:54,470 --> 00:04:55,750
a lo difícil.

47
00:04:55,760 --> 00:05:03,080
Vamos a ver algo simple y vamos a aprovechar esta clase que es simple para ver todos los detalles de

48
00:05:03,080 --> 00:05:07,230
las rutinas almacenadas sobretodo de cómo crearlas.

49
00:05:07,490 --> 00:05:14,060
Así cuando vamos a nuestro siguiente capítulo que nos habla de ya algo más complejo no tengo que volver

50
00:05:14,060 --> 00:05:20,930
a explicar los parámetros o los ateos iniciales de una rutina almacenada.

51
00:05:21,080 --> 00:05:26,000
Cómo creamos una rutina almacenada en nuestra base de datos.

52
00:05:26,120 --> 00:05:30,200
Tenemos que ir a nuestra base de datos botón derecho.

53
00:05:30,200 --> 00:05:32,970
Se acuerdan que íbamos a crear nuevos para crear una tabla.

54
00:05:32,970 --> 00:05:43,370
Bueno vamos a crear rutina almacenada una rutina almacenada tiene estos parámetros estos cetáceos iniciales

55
00:05:43,370 --> 00:05:47,800
que hay que colocar y vamos a verlos uno por uno.

56
00:05:47,870 --> 00:05:49,150
El primero es el nombre.

57
00:05:49,400 --> 00:05:56,420
Si ustedes se fijan aquí yo tengo tres rutinas almacenadas creadas que ustedes no tienen ahí en su base

58
00:05:56,420 --> 00:05:57,820
de ejemplo.

59
00:05:57,920 --> 00:06:04,580
Por ejemplo tengo una llamada borro alumno y cómo me doy cuenta de que es una rutina almacenada porque

60
00:06:04,610 --> 00:06:05,730
el ícono.

61
00:06:05,960 --> 00:06:12,590
Si ustedes se fijan es una diferencia un poco sutil pero Lex la diferencia está.

62
00:06:12,590 --> 00:06:21,590
El ícono tiene una ruedita primero que no es el ícono de tabla sino que es como si fuera un papiro un

63
00:06:21,590 --> 00:06:29,000
papel y con una ruedita de ejecución de 7-O y esas son rutinas almacenadas.

64
00:06:29,000 --> 00:06:37,060
Ahora aquí tengo otra que ustedes ven que pareciera que fuera parecido pero no es lo mismo.

65
00:06:37,070 --> 00:06:38,880
Tiene un color verde.

66
00:06:39,290 --> 00:06:40,880
No sé si alcanza a verlo.

67
00:06:40,880 --> 00:06:48,260
Tiene un color verde y esa es una función se resetean desde el mismo lugar se programan desde el mismo

68
00:06:48,260 --> 00:06:51,050
lugar y el código más o menos parecido.

69
00:06:51,200 --> 00:06:59,590
Pero ahora vamos a ver las diferencias y tengo una última rutina almacenada llamada máxima venta que

70
00:06:59,600 --> 00:07:04,180
esa es una un procedimiento almacenado.

71
00:07:04,310 --> 00:07:09,900
Ahora estas tres son las tres que vamos a ver en estos tres capítulos.

72
00:07:09,920 --> 00:07:16,640
Las dividí en tres capítulos porque vamos a ver primero borro alumno que es la más simple.

73
00:07:16,640 --> 00:07:23,900
Luego vamos a ver máxima venta que es la que sigue en complejidad y cuando lleguemos al último vamos

74
00:07:23,900 --> 00:07:32,090
a ver ganancia ventas que es mucho más compleja completa y vamos a ver que en el código tiene incluido

75
00:07:32,270 --> 00:07:37,830
de todo variables cursores condiciones bucles.

76
00:07:37,850 --> 00:07:44,990
Vamos a ver todo y se los voy a explicar cada cosita así que no se desesperen vamos de a poco cuando

77
00:07:44,990 --> 00:07:52,190
creo una rutina almacenada tengo tres solapas la primer solapas la solapa principal que me abre donde

78
00:07:52,190 --> 00:07:55,420
voy a colocar un nombre de mi rutina.

79
00:07:55,430 --> 00:07:58,820
Yo aquí había puesto en otra borro alumno aquí puede ser

80
00:08:02,000 --> 00:08:12,800
actualizo alumno luego tiene un un campo llamado definidor que tiene que ver con la seguridad con quién

81
00:08:13,980 --> 00:08:17,800
quién va a ser la persona o el usuario.

82
00:08:17,810 --> 00:08:19,820
Mejor dicho la persona.

83
00:08:19,820 --> 00:08:30,560
El usuario que va a tener acceso a esta sentencia esta rutina almacenada y me aparecen todos los usuarios

84
00:08:30,560 --> 00:08:39,140
que tengo definidos y yo voy a tomar el perfil de Root o no si no hacen nada aquí va a tomar el que

85
00:08:39,140 --> 00:08:45,650
viene por default de la base que es Root no tienen que preocuparse por esto salvo que estén manejando

86
00:08:45,660 --> 00:08:49,760
ya seguridad compleja con mi ciclo.

87
00:08:50,570 --> 00:08:56,780
Luego van a dejar o no un comentario explicando que hace la rutina almacenada.

88
00:08:56,780 --> 00:09:04,250
Luego tienen el tipo y aquí es muy importante ver esto porque nosotros tenemos o que vamos a hacer una

89
00:09:04,250 --> 00:09:11,870
rutina almacenada que aquí la llama procedimiento o vamos a crear una función la función devuelve un

90
00:09:11,870 --> 00:09:21,320
resultado el procedimiento no devuelve un resultado aún usando procedimientos y yo dentro de mi rutina

91
00:09:21,380 --> 00:09:23,160
coloco un simple Select.

92
00:09:23,390 --> 00:09:26,510
Cuando la ejecutemos me va a devolver el resultado el Select.

93
00:09:27,080 --> 00:09:30,460
Pero cuál es la diferencia.

94
00:09:30,620 --> 00:09:40,280
La diferencia es que un procedimiento yo lo voy a poder ejecutar por fuera de una sentencia SELECT lo

95
00:09:40,280 --> 00:09:44,150
voy a tener que ejecutar y una función.

96
00:09:44,450 --> 00:09:50,870
En realidad la voy a tener que usar dentro de una sentencia SELECT se acuerdan que cuando vimos funciones

97
00:09:51,320 --> 00:10:00,530
tenemos nuestra función Shum nuestra función min max a beraz o HGE tenemos la función Hilliard para

98
00:10:00,530 --> 00:10:02,410
sacar el año de una fecha.

99
00:10:02,480 --> 00:10:08,660
Bueno esto es lo mismo ustedes van a poder crear sus propias funciones sus propias funciones y esto

100
00:10:08,660 --> 00:10:17,870
va a hacer que al crear sus propias funciones van a poder utilizar luego desde sus desarrollos o dentro

101
00:10:17,870 --> 00:10:25,400
de otros procedimientos almacenados van a poder usar esas funciones y van a resolver mucho código con

102
00:10:25,400 --> 00:10:37,550
eso y las funciones obviamente retornan un valor fijense una cosa aquí si yo elijo procedimiento en

103
00:10:37,550 --> 00:10:45,620
el campo regresa como no va a devolver ningún valor está deshabilitado si yo voy a Función en regresa

104
00:10:45,620 --> 00:10:49,220
voy a tener que elegir qué me va qué me va a regresar.

105
00:10:49,430 --> 00:10:56,300
Por ejemplo la función Guillerme devuelve un entero la función Monks me devuelve un entero la función

106
00:10:56,380 --> 00:11:04,760
a beraz me devuelve un decimal porque el haberá es el promedio puede ser que venga con decimales entonces

107
00:11:04,760 --> 00:11:12,140
me devuelve una décima la función que ustedes creen que les va a devolver un entero un chat un parchar

108
00:11:12,170 --> 00:11:18,140
un texto una fecha eso lo van a elegir ustedes en el momento de crearlas.

109
00:11:20,270 --> 00:11:28,710
Bueno luego tenemos acceso a datos esto es para indicarle al motor si lo que estamos creando basta con

110
00:11:28,710 --> 00:11:37,130
tener sentencias SQL para que lo tenga en cuenta para chequear su sintaxis si no tiene sentencias SQL

111
00:11:37,130 --> 00:11:44,930
por ejemplo es una función que recibe los números enteros y lo que me devuelve es la multiplicación

112
00:11:44,930 --> 00:11:46,030
de ambos.

113
00:11:46,100 --> 00:11:51,020
Ahí no tiene nada que ver el lenguaje se cuele.

114
00:11:51,020 --> 00:12:02,090
No voy a meter instrucciones SQL en mí esto es posible y luego hay una más compleja que dice que nuestra

115
00:12:02,120 --> 00:12:06,170
función va a leer datos de SQL.

116
00:12:06,170 --> 00:12:12,420
Para qué se usa esto para cuando yo en mi función use cursores.

117
00:12:12,650 --> 00:12:19,190
Si ustedes luego vamos a explicar que son los cursores en el tercer capítulo ahora simplemente quédense

118
00:12:19,190 --> 00:12:26,810
con estas definiciones porque si no se va a ser extremadamente largo este capítulo si ustedes en su

119
00:12:27,050 --> 00:12:36,410
rutina almacenada de tipo función van de tipo función o procedimiento van a usar cursores esos cursores

120
00:12:36,410 --> 00:12:45,020
necesitan un acceso a datos especial porque van a trabajar con tablas creadas en memoria y necesitan

121
00:12:45,020 --> 00:12:52,310
que ustedes coloquen este tipo de acceso a datos si ustedes no van a manejar cursores dejan el primero

122
00:12:52,310 --> 00:12:54,810
seleccionado el que viene por defecto.

123
00:12:54,840 --> 00:12:55,990
Por qué esto.

124
00:12:56,030 --> 00:13:03,620
Porque si ustedes meten cursores y lo único que dicen es que contiene sentencias SQL un cursor no maneja

125
00:13:03,620 --> 00:13:11,310
sentencias SQL se crea en base a una sentencia SQL pero el manejo del cursor es diferente.

126
00:13:11,310 --> 00:13:20,840
Entonces el motor cuando lo quieran grabar les va a dar error y luego le Finnair significa la seguridad

127
00:13:20,840 --> 00:13:31,370
de SQL de que donde va a tomar los aspectos de seguridad si dejamos el deformaba asumir que el que definió

128
00:13:31,620 --> 00:13:38,690
y el que está ejecutando nuestra rutina almacenada va a tener que tener permisos vieron que los hemos

129
00:13:38,690 --> 00:13:40,580
creado.

130
00:13:40,630 --> 00:13:48,440
En el capítulo de usuarios y seguridad bueno esa persona quien quiere ejecutar nuestra sentencia SQL

131
00:13:48,920 --> 00:13:57,980
nuestra rutina almacenada perdón va a tener que tener los permisos definidos para crear o ejecutar sentencias

132
00:13:58,790 --> 00:14:00,570
rutinas almacenadas.

133
00:14:00,830 --> 00:14:08,870
Así que bueno esto es la primer solapa la solapa opciones determinista no se los voy a explicar rápidamente

134
00:14:10,240 --> 00:14:21,010
determinista hico por default aparece destilado en el 99.99 por ciento de los casos lo van a tener destilado.

135
00:14:21,010 --> 00:14:29,260
Es más yo les recomendaría que lo detengan siempre destilado y se usa cuando creamos un procedimiento

136
00:14:29,260 --> 00:14:35,420
almacenado que siempre ejecuta lo mismo que siempre.

137
00:14:36,040 --> 00:14:43,420
Por ejemplo siempre devuelve el mismo valor que siempre ejecuta el mismo código que no es variable que

138
00:14:43,420 --> 00:14:52,060
no trae parámetros ni ejecuta sentencias SQL relacionadas con parámetros y que el valor siempre va a

139
00:14:52,060 --> 00:14:53,710
ser diferente.

140
00:14:53,710 --> 00:15:00,650
Entonces por qué el motor creó esto y aquí estoy explicando algo de muy bajo nivel.

141
00:15:00,670 --> 00:15:05,500
Pero para qué de bajo nivel no porque sea malo sino porque estoy explicando algo cómo funciona el motor

142
00:15:05,500 --> 00:15:12,340
en su interior para que ustedes lo entiendan y les quede grabado de por qué se creó esto cada vez que

143
00:15:12,340 --> 00:15:19,210
un usuario se conecta a la base de datos y ejecuta una rutina almacenada el motor crea un espacio en

144
00:15:19,210 --> 00:15:23,620
memoria para ejecutar esa rutina almacenada.

145
00:15:23,620 --> 00:15:30,580
Entonces aparece el usuario Pedro ejecuta la rutina almacenada el motor determina un espacio en memoria

146
00:15:30,580 --> 00:15:36,510
para Pedro cuando aparece Pablo y ejecuta la misma rutina almacenada.

147
00:15:36,670 --> 00:15:41,400
El motor crea un nuevo espacio en memoria para Pablo.

148
00:15:41,530 --> 00:15:48,070
Si tengo mil usuarios y los 1000 están concurrentes y los 1000 están ejecutando la misma rutina almacenada

149
00:15:49,090 --> 00:15:56,890
el motor tiene que crear 1000 espacios en memoria para esos mil usuarios.

150
00:15:56,890 --> 00:16:03,610
Ahora si yo ya sé que la rutina almacenada no va a ser diferente para ellos.

151
00:16:03,750 --> 00:16:10,300
O sea cuando Pablo ejecute esa rutina va a traer el mismo valor al mismo resultado que para Pedro.

152
00:16:10,300 --> 00:16:18,730
El motor mantiene mantienen memoria una sola copia de esa rutina almacenada y la ejecuta para todos

153
00:16:18,730 --> 00:16:20,260
los usuarios.

154
00:16:20,350 --> 00:16:28,420
Esto es muy peligroso si ustedes creen que tildándolo van a resolver temas de memoria y de performance.

155
00:16:28,420 --> 00:16:36,190
Quizás sea así si hacen bien su rutina almacenada pero si no lo hacen bien el mismo motor va a devolver

156
00:16:36,190 --> 00:16:44,200
cualquier cosa o va a tener una inconsistencia o va realmente a colgarse porque están queriendo hacer

157
00:16:44,440 --> 00:16:47,420
cosas diferentes en un mismo espacio de memoria.

158
00:16:47,860 --> 00:16:56,590
Si no son alumnos avanzados o expertos en programación o que ya tengan en claro este tipo de manejos

159
00:16:56,630 --> 00:17:04,820
yo les pediría que no no tilde en esta opción y que la dejan la dejen destiladas.

160
00:17:04,990 --> 00:17:08,800
Luego tenemos la solapa parãmetros nuestra rutina almacenada.

161
00:17:08,800 --> 00:17:15,790
Lo bueno que tienen estos estos pedazos de código que vamos a crear es que permiten recibir parámetros

162
00:17:16,120 --> 00:17:22,810
externos y en base a esos parámetros van a ejecutar y hacer cosas diferentes.

163
00:17:22,810 --> 00:17:30,610
Si yo le pido que me borre el usuario número 4 va a recibir por parámetro el uso el Leydis número 4

164
00:17:30,940 --> 00:17:36,050
y va a ir a borrarme el usuario 4 no me va a ir a borrar el usuario 5.

165
00:17:36,100 --> 00:17:43,600
Ahora si yo la ejecuto nuevamente pero esta vez le digo ahora borrarme el usuario 5 va a hacer eso y

166
00:17:43,600 --> 00:17:45,160
no va a hacer otra cosa.

167
00:17:45,160 --> 00:17:51,900
Parece tonto lo que estoy explicando pero en el curso ya hay y esto es algo que me pone muy feliz.

168
00:17:51,970 --> 00:17:59,920
Hace solo 48 horas que se publicó el curso al momento que estoy grabando esto y ya hay más de mil 200

169
00:17:59,920 --> 00:18:10,140
usuarios registrados así que es mil ciento y pico no sé si superó los 1200 o mil 1333.

170
00:18:10,690 --> 00:18:18,490
Así que bueno hay de todo hay chicos que están empezando y que por ahí esto es muy avanzado pero también

171
00:18:18,490 --> 00:18:25,510
ahí hay colegas que están queriendo aprender más sobre esto y me lo han pedido no solo en el curso sino

172
00:18:25,510 --> 00:18:33,670
en LinkedIn también vamos a ver cómo se agregan los parámetros vamos a agregar un parámetro por ejemplo

173
00:18:33,670 --> 00:18:41,920
un mes yo por convención les pongo un guion bajo primero y aquí tenemos que definir el tipo de dato

174
00:18:41,920 --> 00:18:46,280
que estamos recibiendo que estamos recibiendo una fecha un texto marchar.

175
00:18:46,330 --> 00:18:54,820
No estamos recibiendo un mes que se pueda resolver con un Tini y eso es todo lo que nosotros tenemos

176
00:18:54,820 --> 00:19:01,330
que saber que podemos manejar parámetros el código va a estar aquí en el cuerpo de la rutina comienza

177
00:19:01,330 --> 00:19:08,230
con Veguín termina con él y luego todo esto que nosotros estamos sesteando aquí nos crea nuestro propio

178
00:19:08,530 --> 00:19:17,590
código Ascri podemos extrapolar a nuestro desarrollo si tenemos que crear rutinas desde nuestra aplicación.

179
00:19:17,930 --> 00:19:24,320
Vamos a ver el primer ejemplo que es el más simple y vamos a dar paso luego al próximo capítulo para

180
00:19:24,370 --> 00:19:31,310
Bersa en el próximo capítulo no vamos a ver todo esto pues ya lo vimos y vamos directamente al código

181
00:19:31,310 --> 00:19:35,400
y a explicar cosas que tienen que ver con el código.

182
00:19:35,540 --> 00:19:41,270
Nosotros vamos a descartar esto que estuvimos viendo vamos a ir a nuestra rutina almacenada llamada

183
00:19:41,270 --> 00:19:50,570
borro alumnos que es la primera que he creado que es muy tonta muy simple es muy nada o sea es una sola

184
00:19:50,570 --> 00:19:58,610
línea de código aquí podría tener páginas y páginas de código se entiende muy bien ahora qué es lo que

185
00:19:58,610 --> 00:20:08,810
hace esta esta rutina simplemente recibe un parámetro un Eiriz de alumno que lo tenemos aquí albúm aided

186
00:20:09,640 --> 00:20:17,120
es una Molin es un es una paragüas na variable que entra es un parámetro de entrada no es un parámetro

187
00:20:17,120 --> 00:20:27,120
de salida y lo que va a hacer es borrar la tabla alumnos cuando nosotros le indiquemos una idea de alumno.

188
00:20:27,230 --> 00:20:33,560
Todo lo demás está testeado no es una función es un procedimiento fíjense que no me devuelve nada solamente

189
00:20:33,560 --> 00:20:38,190
ejecuta y vamos a ver cómo ejecutar esto.

190
00:20:38,660 --> 00:20:45,830
Y atención porque yo voy a ejecutar y van a ver que da un error pero no porque esté mal creado nuestra

191
00:20:45,830 --> 00:20:53,270
rutina almacenada porque nosotros en la tabla alumnos le hemos creado a lo largo del curso una llave

192
00:20:53,270 --> 00:21:02,560
foránea uniendo alumnos con materias se acuerdan cuando vimos Foreing Quip llaves foráneas.

193
00:21:02,810 --> 00:21:11,210
Es por eso que ahora vamos a ver cómo funciona correctamente nuestra rutina almacenada porque si no

194
00:21:11,210 --> 00:21:16,550
funcionara no me aparece ningún error o sea ahora lo normal es que me aparezca un error quiero borrar

195
00:21:16,560 --> 00:21:25,940
un alumno que ojo es un alumno que tiene materias asociadas cómo se llama una rutina con el cual llamar

196
00:21:26,030 --> 00:21:36,600
a qué rutina a Borrow alumno si nuestra rutina no tuviera parámetros igual tenemos que usar los paréntesis

197
00:21:36,690 --> 00:21:39,450
y terminar con punto y coma.

198
00:21:39,840 --> 00:21:44,340
Si nuestra rutina no tuviera parámetros se hace así como lo ven ahora.

199
00:21:44,340 --> 00:21:48,750
Pero como tiene un parámetro yo voy a tener que indicar un número o una idea.

200
00:21:49,400 --> 00:21:56,400
Voy a indicar el alumno número 4 que me borre el alumno número 4 cuando ejecuto me va a parecer error

201
00:21:57,050 --> 00:21:58,770
claro por qué aparece Error.

202
00:21:58,770 --> 00:22:03,420
Porque me habla de que tengo una Foreing que está unida a cursos a materias.

203
00:22:03,540 --> 00:22:05,190
Entonces no puedo borrar.

204
00:22:05,280 --> 00:22:08,870
Hay un error de integridad de seguridad.

205
00:22:08,880 --> 00:22:10,360
Se entiende esto.

206
00:22:10,560 --> 00:22:15,420
Nuestra rutina almacenada la primera de todas está funcionando de manera perfecta.

207
00:22:15,420 --> 00:22:22,410
Ahora los invito al próximo capítulo y vamos a ver cómo esto va tomando mucho más forma y se va haciendo

208
00:22:22,410 --> 00:22:24,500
mucho más consistente.

209
00:22:24,510 --> 00:22:26,150
Nos vemos en el próximo capítulo.
