Hola qué tal.
Bienvenidos a este nuevo capítulo del curso completo de base de datos y vamos a ir a nuestro segundo
capítulo de las rutinas almacenadas vamos a ver algo un poquito más más jugoso más completo más nutritivo
digamos porque vamos a aprender más cosas y vamos a dividir este capítulo en dos.
En primer lugar vamos a ver el tema de manejo de errores y luego vamos a ver un ejemplo más de una rutina
almacenada un poquito más completa que la primera que solamente tenía una instrucción así que como no
ameritaba ser un capítulo por cada uno de ellos vamos a unir ambos.
En este capítulo que es el previo a la madre de todas las de todas las rutinas que es la que vamos a
ver en el segundo en el tercer capítulo de esta sección vamos a ver primero el tema de manejo de errores
qué sucede cómo podemos manejar errores dentro de nuestra rutina porque sabemos que el motor chequea
nuestra sintaxis está todo perfecto lograba pero pueden ocurrir errores propios de la integridad de
los datos claves que están duplicadas problemas propios del motor que nos devuelve o no tiene más espacio.
Bueno vamos a saber al menos uno de esos errores y luego la sintaxis es la misma parada para el resto
por lo menos vamos a aprender a manejar errores lo primero que vamos a hacer es ir a nuestra a nuestra
rutina llamada inserto alumnos vamos a hacer click vamos a ver aquí que tenemos nuevas instrucciones
que no hemos visto por ejemplo el declares lo que me permite es crear variables declarar variables declarar
cursores y también declarar manejadores Candler que son los que van a capturar el error lo van a manejar
lo van a le van a dar tratamiento en cuanto encuentren un error en tiempo de ejecución.
La sintaxis es obviamente comienza con declare.
Luego tenemos una cláusula que tiene dos valores posibles continuo o Exit Exit se lo voy a escribir
AQAP por si el audio Exit para qué sirve para decirle al motor bueno en caso de un error continúa ejecutando
lo que hay debajo.
Para que yo pueda manejar mi error y pueda procesarlo y mandar un mensaje formateado por pantalla o
termina la ejecución porque el error que digo es muy grave y no quiero que siga haciendo cosas mi rutina
almacenada.
Esta sentencia SELECT que figura aquí en realidad es parte del error fíjense que en 1062 no hay un puntico
termina aquí la instrucción y esto vendría a ser de esta manera el error 1062 es el error que nos devuelve
el motor cuando detecta que hay una clave duplicada clave duplicada recuérdense que nosotros teníamos
primaría aquí en nuestras tablas y además podíamos tener claves únicas.
Entonces cuando el motor detecta que tanto prima ariki o por una clave única nosotros queremos insertar
un registro que contiene ya un valor que ya existe en la tabla.
Me va a dar error me va a decir no esto ya está este número ya está grabado en la tabla y es único no
puede repetirse.
Ok ahora qué es lo que va a hacer el.
Esta instrucción una vez que lo detecta va a ser lo que yo le coloqué aquí y aquí yo puedo hacer que
me mande por pantalla un mensaje en las rutinas almacenadas cuando yo coloco un Selleck.
Si ese Selleck no tiene un destino hacia una variable más que lo vamos a ver en esta misma y en este
mismo capítulo en el otro ejercicio que vamos a ver me manda lo que yo coloque en la instrucción cel
por pantalla por pantalla o me lo devuelve en la misma en el mismo procedimiento para que yo desde mi
aplicación lo pueda manejar muy bien ahora una vez que detectó esto sigue la ejecución.
En realidad no es que ejecuta primero esto y después esto él el manejador lo que hace es grabarse en
memoria y quedarse esperando esta instrucción no hace nada por sí misma.
Si durante la ejecución de mi rutina no hay ningún error.
Esto no fue más que una mera declaración y una mera información que quedó grabada en memoria y no hizo
nada.
Ahora sí cuando continúa detecta que tengo una instrucción que generó esta excepción.
Esto se va a disparar automáticamente y a partir de ahí va a operar y va a ser lo que yo le coloque
aquí.
Lo que nosotros estamos haciendo en esta rutina almacenada es tratar de insertar un registro en alumno
invitado de alumnos tiene como valor dos parámetros que están aquí yo le estoy pasando por parametro
el Aydin de alumno y el nombre del alumno.
Muy bien ahora vamos a ir a nuestra tabla alumnos no vamos a grabar eso si vamos a robar bueno algo
me decía no tenía grabar
vamos a nuestra tabla alumnos vemos que tenemos tres registros tenemos el 1 el 3 y el 4 vamos a insertar
el registro número 2.
Entonces lo que tenemos que hacer es ir.
Aquí tenemos nuestra Kila termina grabando no sé por qué me apareció.
Hay cosas que por ahí el G10 se vuelve a veces tiene esas cositas que da esos mensajes no se preocupen
que todo está bien.
Vamos a hacer un llamado a nuestra rutina inserto a alumnos
y entre paréntesis vamos a colocar Obviamente nuestro dildos y lo vamos a llamar Marcos.
Un tema importante que quiero explicarles fíjense que nosotros estamos forzando al motor a que coloque
la prima ariki que nosotros estamos indicando ahora por parametro.
Yo les expliqué que no hacía falta incluir las primas ariki en nuestras inserciones.
Por qué.
Porque al ser auto incremental el motor solamente se ocupa de incrementar el número de próximo alumno
y lograba que no haga falta.
No significa que no se pueda sea que no haga falta.
Es bueno no no tienen la necesidad de hacerlo.
Ahora si ustedes lo hacen si ustedes le dicen al motor que más allá de el auto incremental y más allá
de que ya lleva una numeración ustedes le fuerzan un número.
El motor se los va a tomar igual y no importa si el dato que le están dando a ustedes es el próximo
número libre.
Ustedes les pueden saltear cien números a los alumnos.
Puede venir que el próximo alumno disponible es el número cinco y ustedes pueden decirle que quieren
insertar el 105 por ejemplo.
No hay ningún problema el motor lo respeta y a partir de ese número continúa el auto incremental.
Así que por eso sólo quería explicarles esto porque bueno en las clases anteriores me maté diciéndole
que no hace falta no hace falta.
Bueno en este caso lo vamos a forzar para que para poder forzar una clave duplicada vamos a ejecutar
esto y me aparece un no es un error es una advertencia que tiene que ver con el colación con el tipo
de letra que es si quiero convertir el VF.
Esto no le presten atención porque no estamos haciendo nada raro simplemente estamos insertando un registro
vamos a nuestra tabla alumnos y vemos que ya tenemos a Marcos flamante alumno número dos uno dos tres
cuatro aquí tenemos completado el grupo muy bien.
Ahora qué ocurre.
Si yo lo vuelvo a ejecutar porque mi prima ariki no puede repetirse no puedo volver a ingresar el número
dos si lo ejecuto me aparece el mensaje de clave duplicada fíjense el nuestro.
Nuestra rutina almacenada que cuando el Candler el manejador de error detectó el código 1062 en lugar
de aparecer un error horrible de los que aparecen en el Jaydy SQL con cãrtel error y demás me permitió
manejar el error y mostrar un mensaje.
Ahora fíjense que el nombre de mi campo es clave duplicada no está bien esto por qué.
Porque yo aquí voy a tener el escandaletes uno por el código 1062 otro por otro código por fin de archivo
no sé depende lo que yo quiera hacer en mi rutina almacenada.
Voy a tener distintos manejadores así que le vamos a colocar un alias para que todos tengan el mismo
alias de salida y yo desde una aplicación pueda detectar lo que le vamos a colocar mensaje a nuestro
alias
porque en definitiva es una instrucción Cele.
Recuerden que lo que aquí coloque aquí le puede poner un alias.
Ahora vamos a grabarlo vamos a ejecutarlo y ahora ya mi campo se llama mensaje.
Entonces si yo tuvieras 20 manejadores de error en una misma rutina a todos les coloco mensaje y el
campo se va a llamar mensaje.
Pero el texto que me va a mostrar va a ser diferente se entiende y esto lo voy a poder manejar desde
mi aplicación de una manera óptima.
Así que bueno bárbaro hemos visto el tema de manejo de errores y vamos a ver nuestra segunda parte de
este capítulo nuestra segunda parte que es esta rutina llamada máxima venta.
Vamos a hacerle click vamos a ir a la rutina y vamos a ver algunas características nuevas para que ustedes
vean cómo va tomando forma cómo se va haciendo más nutritiva nuestra nuestra rutina no va a Chab tiene
más aspecto de procedimiento almacenado y no una simple instrucción insert como fue nuestro primer capítulo.
Bueno vamos a ver algunas cosas yo les dije que declaré me permitía crear variables me permitía crear
cursores me permitía crear manejadores de error y en este caso estamos creando una variable en la sintaxis
es ésta.
Todo comienza con declaré el nombre de la variable el tipo de dato.
Si eligen decimal es muy importante que le coloquen la longitud.
Si no colocan la longitud no les va a dar error se los va a tomar pero cuando quieran hacer una operación
con esa variable les va a aparecer un error de que tiene que truncar los datos porque el valor que quieren
alojar ahí es más largo de lo que han declarado.
Esto es muy importante háganlo así van a evitar errores y tiempo coloquen lo que ustedes deseen.
Escamados 5,3.
Lo que ustedes deseen y luego tenemos un 7-O en cero de esa variable la ponemos en cero en rutinas almacenadas
de mi ciclo se usa la instrucción C.T es un error de sintaxis hacer esto que solamente quede valor máximo
igual a cero.
Si bien en la mayoría de los lenguajes se hace así en mi ciclo no hay que usar sí o sí el set para todo
lo que tiene que ver con asignar valores se usa el otro aspecto importante es que los declares van al
comienzo del Wiggin luego vienen el resto de las instrucciones.
Yo no puedo declarar variables en el medio del código no puedo declarar mi cursores ni manejadores.
En un orden que no sea al comienzo de toda la rutina esto es algo que tienen que saber y respetar y
luego lo que tenemos aquí es una particularidad es una particularidad porque parece ser una sentencia
C.L. normal.
Sin embargo tiene algo diferente.
Tenemos un Celes que me va a traer la cantidad máxima el valor máximo de ventas total o sea va a recordar
mis facturas y va a traerme el valor máximo.
Cuál fue la factura de mayor valor que yo hice de mi tabla ventas pero qué sucede.
El resultado no me lo va a mostrar por pantalla el resultado lo va a grabar en una variable este InTouch
valor máximo lo que le está diciendo es que el resultado de ese campo al resultado de este cálculo de
esta función arãvalo en valor máximo y esto yo podría tener l@ variables y separados por comas traer
otro campo y ponerle InTouch otra variable y así sucesivamente y podría leer todo un registro podría
traer todo un registro de una tabla y grabar cada campo en mí en mis variables.
Vamos a ver en el capítulo siguiente cómo lo podemos hacer más complejo van a ver cómo nos traemos tres
campos de una tabla y hacemos operaciones van a ver lo fácil que es una vez que lo grabó en la variable
nosotros tenemos una bloque de sentencias de condición el famoso if if then para saber una condición
y nosotros tenemos que una instrucción que nos dice que si el valor máximo supera los mil pesos o los
1000 voy a mostrar por pantalla en un campo.
Aquí fíjense que está el alias igual que en el ejercicio anterior en un campo mensaje voy a mostrar
el texto que dice se superaron los mil por qué.
Porque lo que quiero saber en esta rutina almacenada es si yo logré superar un monto determinado de
factura y si no me va a parecer aún no superamos los 1000 y todo lo va a grabar en el alias de mensaje
esta rutina no tiene parámetros.
No le estoy pasando ningún parámetro.
Simplemente está ejecutando esto y vamos a ver cómo funciona vamos a venir aquí vamos a colocar
máxima venta.
Abro y cierro paréntesis.
Recuerden que aunque no tenga parámetros hay que hacerlo así y lo ejecuto y el mensaje me dice se superaron
los mil pesos porque realmente tengo facturas de mucho más de mil pesos ahora fíjense esto esto es lo
que ustedes tienen que aprender las posibilidades ustedes tienen que aprender el abanico de posibilidades
puedo hacerlo de esta manera puedo grabar un valor máximo puedo tener variables puedo aceptar esas variables
puedo preguntar por esas variables y dependiendo del valor hacer determinadas cosas van a ver después
qué tenemos no solo I.V tenemos cais tenemos EDUS Weyl tenemos Lobb tenemos repeat tenemos muchas muchas
estructuras de bucle de condicionamiento que podemos usar en nuestras rutinas almacenadas no vamos a
saber todas.
Vamos a ver un par porque luego esto es un puntapié inicial para que ustedes vean lo que se pueda hacer
y cómo hacerlo y luego cambiar una instrucción por otra existe muchísima documentación para hacerlo
y tampoco podemos hacer una sección de 10 horas dedicado exclusivamente a rutinas almacenada.
Bueno esto es el fin del segundo ejercicio del segundo capítulo y los espero en el próximo capítulo
y vamos a ver algo mucho más complejo y mucho más completo.
Realmente van a sentirse a gusto con lo que van a terminar viendo de lo que son las rutinas almacenadas
así que nos vemos en el próximo capítulo.