Uso del punto y coma en T-SQL

Microsoft publica en la MSDN la “Lista de características desusadas del motor de base de datos de SQL Server 2012“. Esta lista es útil para mantener nuestra aplicación actualizada, de tal forma que podamos seguir usando las nuevas funcionalidades de las sucesivas versiones SQL Server. Mantener en nuestro código alguna característica marcada como obsoleta o en desuso implicaría que no podríamos ejecutarlo en la versión de SQL que ya no la soportase.

Pues bien, en dicha lista aparecen tanto las características que no serán soportadas en la próxima versión de SQL Server como las que estarán en desuso en futuras versiones. Esta segunda lista es muy amplia, pero si leemos detenidamente en ella nos encontraremos con, al menos, una característica que nos llamará la atención:

“No finalizar las instrucciones de Transact-SQL con un punto y coma.”

Es decir, Microsoft pretende que deje de ser opcional -como lo es hasta ahora- finalizar las sentencias SQL con o sin punto y coma. Hasta ahora, su opcionalidad ha provocado que millones de líneas de código Transact SQL se haya escrito sin punto y coma al finalizar cada sentencia. Incluso el código que Microsoft implementa en las bases de datos de sistema no incluye este símbolo final.

Así pues, parece descabellado que se pretenda que a partir de una incierta futura versión de SQL Server sea obligatorio, como así pretende Microsoft, finalizar cada sentencia con punto y coma. En tal circunstancia, todo el código anterior debería ser revisado… ¡Todo, sin excepción! No se trataría de buscar una determinada característica en él y reemplazarla, sino de cambiarlo entero. Incluso aquel programador acostumbrado a finalizar sus sentencias con dicho signo de puntuación puede haber olvidado ponerlo en alguna ocasión, ya que su T-SQL era igualmente válido.

Es impensable ponernos a revisar todo el código de la Base de Datos cuando ya está avanzada la aplicación, pero ya que Microsoft no avisa con tiempo, nos aprovechamos y a partir de ahora, cada procedimiento que modifiquemos o que hagamos nuevamente, sería una muy buena práctica cambiarlo y terminar cada sentencia con un punto y coma. Recalco que se traca de cada sentencia no cada bloque de ejecución. Para los que programamos en Delphi esto es posiblemente más sencillo, ya que es exactamente igual que si programásemos en Delphi.

Además de lo anteriormente expuesto, actualmente se pueden dar casos en los que no terminar con un punto y coma suponga errores o peor aún, que no se ejecute parte del código y ni nos enteremos.

Pongamos un ejemplo. En el código que pongo a continuación, el Sql Server no dará error.
BEGIN TRANSACTION

  EXEC ProcedureName

COMMIT TRANSACTION
Si quitamos el EXEC en la llamada al procedimiento se quitara el error, pero….. No se ejecutará la llamada al mismo, ya que el compilador pensara que comenzamos una transacción llamada “ProcedureName” pero no se ejecutará la llamada. Si en su lugar ponemos.
BEGIN TRANSACTION;

  EXEC ProcedureName;

COMMIT TRANSACTION;
Ya no habrá lugar a dudas para el compilador de cuales son las sentencias a ejecutar.

Para más información.
http://www.sqlserverya.com.ar/temarios/descripcion.php?cod=108&punto=102

http://blogs.sqlsentry.com/aaronbertrand/bad-habits-semi-colons-schema-prefix/

Si algo sucedió con nuestra salud, creemos que hay una solución a cualquier enfermedad en una píldora. Hoy en día, alrededor del 35% de los estadounidenses compran medicamentos en línea. A veces los servicios ofrecen a sus clientes Kamagra. Debajo están las decisiones importantes que ustedes son tiene que hacer sobre “http://zithromax.me/es/azitromicina.html“. ¿De qué hablan los proveedores de atención médica “Azitromicina“? No se olvide, considere “a href=”http://zithromax.me/es/azitromicina.html”>Azithromycin“. Después de todo, hay algunas explicaciones y los farmacéuticos son generalmente capaces de identificar su problema a través de pruebas psicológicas. Antes de comprar Kamagra o cualquier otro medicamento, describa a su farmacéutico su condición médica. El médico puede ordenar algunas pruebas para descartar cualquier problema médico forense que pueda estar contribuyendo a la enfermedades respiratorias. No tome medicamentos genéricos no deseados. Llévelos a su farmacia local que dispondrá de ellos para usted.


Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Límite de tiempo se agote. Por favor, recargar el CAPTCHA por favor.