1 00:00:01,970 --> 00:00:07,929 Vamos a ver cómo crear un ejemplo de procedimiento con MySQL. 2 00:00:08,669 --> 00:00:15,810 Desde la consola, en primer lugar, vamos a seleccionar una base de datos, por ejemplo, la base de datos prueba. 3 00:00:17,050 --> 00:00:17,370 ¿De acuerdo? 4 00:00:18,030 --> 00:00:24,670 Y, en principio, si no lo definimos de otra forma, crearíamos el procedimiento en la base de datos prueba. 5 00:00:25,410 --> 00:00:30,210 Recordamos que la sintaxis para crear el procedimiento es createProcedure. 6 00:00:31,109 --> 00:00:34,689 Pero lo primero que vamos a hacer es redefinir el delimitador. 7 00:00:35,789 --> 00:00:43,289 ¿Por qué? Porque nosotros, en realidad, si queremos poner varias sentencias dentro de un procedimiento, 8 00:00:43,469 --> 00:00:46,390 todas esas sentencias, recordamos que tiene que acabar en punto y coma. 9 00:00:47,090 --> 00:00:53,049 Entonces, si queremos que se ejecute en bloque la creación de todo el procedimiento, 10 00:00:53,630 --> 00:00:55,950 necesitamos un delimitador diferente. 11 00:00:56,490 --> 00:00:59,649 Vamos a irlo viendo ahora, poco a poco, según voy a escribir el código. 12 00:00:59,649 --> 00:01:10,709 Entonces, definimos el delimitador, por ejemplo, con doble interrogante, y ahora hasta que no ejecute doble interrogante no va a ejecutar en bloque toda esa sentencia. 13 00:01:10,709 --> 00:01:23,150 Es decir, si yo empiezo, concluyo, procedur, vamos a llamarlo proz1, no va a recibir ningún parámetro de entrada, ¿vale? 14 00:01:23,150 --> 00:01:28,129 Yo aquí puedo definir todas las instrucciones que quiera entre un begin y un end. 15 00:01:28,689 --> 00:01:37,170 Por ejemplo, vamos a que me muestre la primera cadena, ¿vale? 16 00:01:37,269 --> 00:01:42,370 Y vemos que, como decía antes, está separada por punto y coma, ¿vale? 17 00:01:42,890 --> 00:01:52,349 Entonces, como yo he definido el delimitador a doble interrogante, ahora según yo pulse intro no va a finalizar la ejecución con este punto y coma. 18 00:01:52,349 --> 00:01:55,629 ¿Por qué? Porque he redefinido el delimitador a doble interrogante. 19 00:01:55,870 --> 00:02:02,469 Si no lo hubiera redefinido, tendría aquí un problema, porque trataría de finalizar esta ejecución y nos daría error. 20 00:02:02,829 --> 00:02:04,510 ¿Vale? Después si queréis hago un ejemplo. 21 00:02:05,310 --> 00:02:12,669 Entonces, pongo la primera sentencia, pongo la segunda, voy a poner todas las que yo quisiera, ¿de acuerdo? 22 00:02:14,509 --> 00:02:19,870 Vamos a poner la segunda sentencia, ¿vale? Y una vez finalizado, el end. 23 00:02:19,870 --> 00:02:24,289 Ahora para finalizar la ejecución tengo que poner el delimitador que he definido. 24 00:02:24,469 --> 00:02:30,870 Entonces ahora sí que vemos que me ejecuta todo este bloque hasta que encuentra este delimitador. 25 00:02:31,210 --> 00:02:35,830 ¿Qué sucede? Yo si quiero llamar a este procedimiento tendría que usar este delimitador antiguo. 26 00:02:36,830 --> 00:02:39,009 Entonces si quiero evitar eso, ¿qué puedo hacer? 27 00:02:39,270 --> 00:02:44,629 Reveje el delimitador al valor por defecto de punto y coma. 28 00:02:44,629 --> 00:02:47,969 entonces ahora yo si quiero llamar a este procedimiento 29 00:02:47,969 --> 00:02:50,169 voy a utilizar el parámetro col 30 00:02:50,169 --> 00:02:52,770 y el nombre del procedimiento 31 00:02:52,770 --> 00:02:54,289 que lo hemos llamado proced1 32 00:02:54,289 --> 00:02:56,129 y ahora sí que puedo poner punto y coma 33 00:02:56,129 --> 00:02:57,469 si no lo hubiera redefinido 34 00:02:57,469 --> 00:02:59,849 tendría que haber puesto el nombre interrogante 35 00:02:59,849 --> 00:03:01,889 pero como está todo definido 36 00:03:01,889 --> 00:03:04,389 me bastaría con punto y coma 37 00:03:04,389 --> 00:03:07,050 y vemos que me ejecuta las dos extencias 38 00:03:07,050 --> 00:03:10,009 el select de Lola y el select de la Dios 39 00:03:10,009 --> 00:03:11,810 ahí estaría el doble resultado 40 00:03:11,810 --> 00:03:14,150 este procedimiento ha sido definido 41 00:03:14,150 --> 00:03:18,189 dentro de la base de datos Prueba, pero yo puedo llamar 42 00:03:18,189 --> 00:03:22,090 este procedimiento desde otras bases de datos. ¿Cómo? Bueno, si puedo 43 00:03:22,090 --> 00:03:25,789 en la primera nueva, si selecciono otra base de datos 44 00:03:25,789 --> 00:03:30,189 ¿vale? y quiero llamar al procedimiento que está 45 00:03:30,189 --> 00:03:33,949 en la base de datos Prueba, pues le doy Prueba, punto 46 00:03:33,949 --> 00:03:37,150 y el nombre del procedimiento, Prueba1 47 00:03:37,150 --> 00:03:41,889 ¿vale? Y con esto vemos que lo encuentran 48 00:03:41,889 --> 00:03:43,650 sabe que está en la base de datos prueba 49 00:03:43,650 --> 00:03:45,669 y lo ejecuta 50 00:03:45,669 --> 00:03:46,849 exactamente igual 51 00:03:46,849 --> 00:03:49,009 espero que os sirva 52 00:03:49,009 --> 00:03:50,330 de cara a los ejercicios 53 00:03:50,330 --> 00:03:51,909 y que lo podáis utilizar 54 00:03:51,909 --> 00:03:53,069 venga, un saludo