1 00:00:02,350 --> 00:00:08,150 Vamos a realizar el ejercicio 2.6.5, que es sobre cursores y excepciones. 2 00:00:08,150 --> 00:00:18,510 Nos pide averiguar a partir del código de un cliente, que imprimamos el código de dicho cliente, el nombre, la ciudad y el país. 3 00:00:18,769 --> 00:00:27,829 Aparte nos pide que obtengamos los pagos que ha realizado, ordenados de manera cronológica, y la cantidad total de pagos que ha realizado. 4 00:00:27,829 --> 00:00:32,689 entonces toda esta información la vamos a obtener de la tabla pagos 5 00:00:32,689 --> 00:00:36,810 que es esta de aquí, de la cual obtendremos la forma de pago 6 00:00:36,810 --> 00:00:40,329 la ley de transición, la fecha de pago y la cantidad 7 00:00:40,329 --> 00:00:44,109 y de la tabla clientes que tenemos aquí 8 00:00:44,109 --> 00:00:48,549 pues obtendremos el código del cliente, el nombre del cliente 9 00:00:48,549 --> 00:00:55,179 el país del cliente y la ciudad del cliente 10 00:00:55,179 --> 00:00:59,320 entonces vamos a crear un procedimiento 11 00:00:59,320 --> 00:01:01,600 llamado pagos clientes 2 12 00:01:01,600 --> 00:01:05,599 en el cual haremos una variable llamada vcliente 13 00:01:05,599 --> 00:01:08,700 que es donde acumularemos la información de entrada 14 00:01:08,700 --> 00:01:13,579 y le pondremos un parámetro que sea solamente de entrada 15 00:01:13,579 --> 00:01:17,260 y será para la tabla clientes 16 00:01:17,260 --> 00:01:23,060 entonces vamos a crear un cursor para recorrer la tabla pagos 17 00:01:23,060 --> 00:01:25,079 entonces le vamos a llamar mi cursor 18 00:01:25,079 --> 00:01:29,200 y le decimos que efectivamente recorre la tabla pagos 19 00:01:29,200 --> 00:01:33,680 y cuando encuentre que el código del cliente sea igual 20 00:01:33,680 --> 00:01:37,340 que la variable que introducimos, nos saque dicha información 21 00:01:37,340 --> 00:01:41,560 entonces, en pago clientes le vamos a indicar 22 00:01:41,560 --> 00:01:45,299 que estas son las filas que vamos a extraer 23 00:01:45,299 --> 00:01:48,700 y vamos a crear también una variable 24 00:01:48,700 --> 00:01:53,260 que se llama total, con una entero en la cual vamos a acumular 25 00:01:53,260 --> 00:01:56,980 la suma de todos los pagos que ha realizado 26 00:01:56,980 --> 00:02:08,500 el dicho cliente. Entonces buscamos toda la información de la tabla clientes, donde el código cliente sea igual a la variable del cliente. 27 00:02:09,840 --> 00:02:20,039 Entonces aquí vamos a imprimir todos los datos que nos piden, el código, el nombre, la ciudad y el país. 28 00:02:20,039 --> 00:02:23,259 le pondremos unos separadores 29 00:02:23,259 --> 00:02:27,879 para que podamos leer toda la información correctamente 30 00:02:27,879 --> 00:02:32,340 y le pondremos una cabecera para poder ver todos los datos 31 00:02:32,340 --> 00:02:36,759 entonces aquí empezará el cursor de apertura 32 00:02:36,759 --> 00:02:41,159 entonces, como tenemos que obtener la información 33 00:02:41,159 --> 00:02:45,879 de varios clientes, la manera que hay para realizar eso 34 00:02:45,879 --> 00:02:49,639 es con un bucle para recorrer 35 00:02:49,639 --> 00:02:52,520 toda la tabla, entonces 36 00:02:52,520 --> 00:02:56,599 recorremos todo el cursor con un bucle for 37 00:02:56,599 --> 00:03:00,240 empieza aquí y termina aquí 38 00:03:00,240 --> 00:03:05,240 entonces en la variable total vamos a 39 00:03:05,240 --> 00:03:09,360 ir acumulando todas las cantidades 40 00:03:09,360 --> 00:03:13,240 que paga dicho cliente, aquí se imprimiría 41 00:03:13,240 --> 00:03:15,419 cada pago que te va realizando 42 00:03:15,419 --> 00:03:17,960 y lo acumularía en esta variable 43 00:03:17,960 --> 00:03:20,219 después para imprimirlo posteriormente 44 00:03:20,219 --> 00:03:21,740 entonces 45 00:03:21,740 --> 00:03:22,759 imprimimos aquí 46 00:03:22,759 --> 00:03:25,479 el ID de transición, la fecha de pago 47 00:03:25,479 --> 00:03:27,740 la forma de pago y la cantidad 48 00:03:27,740 --> 00:03:29,699 como hemos dicho ya 49 00:03:29,699 --> 00:03:31,520 cerramos aquí y terminaría nuestro 50 00:03:31,520 --> 00:03:33,039 bucle 51 00:03:33,039 --> 00:03:35,719 a continuación lo que hacemos es 52 00:03:35,719 --> 00:03:37,020 poner otro separador 53 00:03:37,020 --> 00:03:39,719 e imprimir el total 54 00:03:39,719 --> 00:03:40,979 de pagos efectuados 55 00:03:40,979 --> 00:03:42,419 que como hemos dicho 56 00:03:42,419 --> 00:03:45,379 que se va a acumular en la variable total 57 00:03:45,379 --> 00:03:49,159 y si el procedimiento termina satisfactoriamente 58 00:03:49,159 --> 00:03:52,639 pues pondremos un mensaje de que ha terminado correctamente 59 00:03:52,639 --> 00:03:56,539 después implementaremos un control de excepciones 60 00:03:56,539 --> 00:04:00,219 para que en caso de que introduzcamos un código 61 00:04:00,219 --> 00:04:03,240 que no se encuentre en nuestra base de datos 62 00:04:03,240 --> 00:04:05,699 el programa lo diga 63 00:04:05,699 --> 00:04:10,780 entonces aquí terminaría nuestro procedimiento 64 00:04:10,780 --> 00:04:15,080 lo que hacemos aquí es crear un pequeño programa 65 00:04:15,080 --> 00:04:17,759 con el cual llamaremos al procedimiento 66 00:04:17,759 --> 00:04:19,100 introduciremos una variable 67 00:04:19,100 --> 00:04:23,699 en la cual le pasaremos un número 68 00:04:23,699 --> 00:04:27,100 y mediante este número que hemos metido 69 00:04:27,100 --> 00:04:28,699 llamaremos al procedimiento 70 00:04:28,699 --> 00:04:33,000 y le pasaremos esta variable que hemos creado 71 00:04:33,000 --> 00:04:36,100 vamos a comprobar si funciona correctamente 72 00:04:36,100 --> 00:04:40,040 le vamos a meter el código 4 por ejemplo 73 00:04:40,040 --> 00:04:48,480 y vemos que funciona correctamente, nos saca nuestro código, el nombre del cliente, la ciudad, el país 74 00:04:48,480 --> 00:04:53,019 del ID de transacción nos saca todas las transacciones que ha hecho 75 00:04:53,019 --> 00:04:58,560 nos indica las fechas de los pedidos, la forma de pago y la cantidad 76 00:04:58,560 --> 00:05:06,360 si sumamos todas estas cantidades, 20.000 más 20.000 más 20.000 más 20.000 más 1.849 77 00:05:06,360 --> 00:05:09,939 nos da un total de 81.849 78 00:05:09,939 --> 00:05:11,220 que es el total 79 00:05:11,220 --> 00:05:14,699 y como el procedimiento ha funcionado bien 80 00:05:14,699 --> 00:05:16,680 ha salido satisfactoriamente 81 00:05:16,680 --> 00:05:18,779 nos muestra el mensaje 82 00:05:18,779 --> 00:05:19,839 que le hemos puesto 83 00:05:19,839 --> 00:05:22,579 si en vez de poner un número 84 00:05:22,579 --> 00:05:23,740 que está en la base de datos 85 00:05:23,740 --> 00:05:25,660 le pusiéramos otro código 86 00:05:25,660 --> 00:05:28,220 que no lo encontrara en nuestra base de datos 87 00:05:28,220 --> 00:05:30,819 nos indicaría que hay un error 88 00:05:30,819 --> 00:05:32,639 y que dicho código no se encuentra 89 00:05:32,639 --> 00:05:33,800 en nuestra base de datos