domingo, 1 de junio de 2014

Raise (Signal) MySql Exception

It's true that we can do a lot of data validation on the front-end. But, in some cases, it happens that is more convenient to do it at the server side. No only because it helps us to enforce data integrity, but because changes in stored procedures, functions, triggers, etc doesn't involve recompile and redistribute the application executable file.

It happens then that in some cases we need to raise an exception from a stored procedure as a way to let the front-end know that the process was not executed correctly. ¿How to do it in MySQL?. The basic sentence is very simple:

SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Error Message';

In the following video we have a brief example (video is in spanish but you can get an idea just by watching):



This works from MySQL 5.5 and above. It basically assigns an error code ('45000' in this case) and a message as a text for the exception. There are predefined error codes (check this list) but because we want to raise an excepcion (or SIGNAL in MySQL) is for our app/database only then its better to use one code that doesn't exists in that list.

If we wanted to be much more specific about the information we want to send as part of the exception, we can set some other values.

My first search about this topic lead me to a StackOverFlow post and from the a search by jumping from link to link.

¡Greetings!

Levantar una Excepción en MySql / Raise (Signal) MySql Exception

Es  muy cierto que en el front-end podemos realizar muchísimas de las validaciones necesarias a los datos. Sin embargo, en ocasiones resulta más conveniente realizarlo en el lado del servidor, no solo porque nos ayuda a cuidar la integridad de la base de datos, sino porque un cambio en un procedimiento almacenado, trigger, etc. no implica recompilar y redistribuir el ejecutable de la aplicación.

Resulta entonces que en ocasiones necesitamos lanzar una excepción desde un procedimiento almacenado como manera de avisar al front-end de que el proceso no pudo ser ejecutado correctamente. ¿Cómo hacerlo en MySql?. La instrucción básica es muy sencilla:

SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Mensaje de Error';

En el siguiente video podemos ver un ejemplo sencillo:



Esto funciona a partir de la versión 5.5 de MySql. Básicamente se asigna un código de error ('45000' en este caso) y un mensaje como texto de la excepción. Existen códigos de error predefinidos por MySql (ver la lista) aunque, dado que la excepción ó signal que queremos levantar es propia de nuestra aplicación/base de datos, es preferible utilizar un código que no exista en esa lista.

Si quisiéramos ser mucho más específicos en la información que queremos enviar como parte de la excepción, podemos establecer otros valores.

Mi primera consulta acerca de este tema me llevó a un tema en StackOverFlow y de allí busqué un poco más con un par de saltos en la web.

Saludos!

viernes, 29 de noviembre de 2013

Cursor en MySQL

Hace raaaato que no escribía nada aquí y no porque no necesita guardar apuntes, o compartir puntos de vista, sino porque no me daba el tiempo. Incluso un post sencillo como este se lleva 30 minutos en crear y revisar. Y a veces, cuando el tiempo apremia y ya encontraste la solución no quieres "perder" 30 minutos dejándote una nota.

Pero, dado que ya van varias veces que tengo que investigar esto, creo que es mejor dejarle una nota a mi "yo futuro" quien seguramente olvidará algún que otro detalle, para que pueda consultarlo aquí directamente. Espero que le sea de utilidad a alguien además de mi.

La plantilla básica:



Un ejemplo:




Estos dos links son de bastante ayuda:
http://rpbouman.blogspot.mx/2005/10/nesting-mysql-cursor-loops.html
http://www.mysqltutorial.org/mysql-cursor/


Saludos!

jueves, 26 de julio de 2012

VB.NET obtener directorio del ejecutable

Este post sera corto =)

A veces resulta que necesitamos saber el directorio desde el cual esta ejecutando nuestro programa, para ello tenemos varias opciones que aunque tienen sus diferencias son mas o menos equivalentes:

  • Application.ExecutablePath
  • Environment.CurrentDirectory
  • System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly.Location()))
  • AppDomain.CurrentDomain.BaseDirectory

!Saludos!

martes, 24 de julio de 2012

Desarrollos con poca inversión con .NET

Si bien podría parecer que programar con .NET es costoso la verdad es que esto no es así. Aunque Visual Studio es una plataforma de pago, no es necesario comprar las versiones Professional de .NET ni invertir en costosos servidores web o de bases de datos porque hace tiempo que Microsoft puso a nuestra disposición esas herramientas de manera gratuita en versiones "Express".

Lo anterior es algo que me llama mucho la atención y que creo que genera bastante bastantes oportunidades para los emprendedores, no solo para aprender sino para comenzar a formar su propio negocio.

Obviamente las versiones Professional y Ultimate tendrán sus ventajas y herramientas que facilitan aún más la labor del desarrollador, sobre todo cuando se trata de equipos de trabajo pero las versiones Express también funcionan bastante bien.

Bueno, sin más preámbulo aquí te comento las opciones (para .NET) que ayudarán a desarrollar software sin gastar un solo centavo.