[LUG.ro] sentencia if en sql .. mysql

Mario Oroz lugro@lugro.org.ar
Thu, 18 Oct 2007 12:10:54 -0300


Angel Aranciba escribió:
> hola,
> necesito hacer unas consultas en un solo querry un tanto complejas
> usando sql puro a un server de mysql. Tendria que hacer algo por el
> estilo de:
> 
> if pasa algo a [%Variable%] then
> hacer estas sentencias de sql
> else
> hacer estas otras sentencias de sql
> end if
> 
> digamos .. un tipico y querido if.
> 
> El problema es que no se la sintaxis. buscando por el San G, termine
> en http://dev.mysql.com/doc/refman/5.0/es/if-statement.html
> pero la sintaxis que creo enteder de ahi no me anda.
> 
> ejecuto desde phpmyadmin esta version reducida para testear la sintaxis:
> 
> if 1<3 then SELECT `first_name` FROM `contacts`WHERE `phone_home` != ""
> end if;
> 
> y me tira error de sintaxis. La sintaxis del select esta correcta.
> Segun vi por ahi, hay dos tipos de if distintos, uno que es un comando
> (no me sirve ya que las sentencias a ejecutar condicionalmente son muy
> distintas) y otro que es una sentencia.
> 
> Cualquier ayuda es de utilidad,
> 
> Saludos y gracias.
> 
> PD: if o case .. me da igual, por ahi lei que el if no era estandar ..
> pero como es para hacer sobre mysql ...

El tema es que esta construcción esta enmarcada por lo que
veo en una *stored procedure* y por eso el interprete sql te dice
que no entiende el if.
Creo que si requiere cindicionalidad la ejecucion del comando sql
debes caer en procedimientos o funciones almacenadas.
A menos qeu pruebes hacer un:
SELECT IF <tal cosa> THEN <SQL-V> ELSE <SQL-F> END IF
y te funcione!

Saludos.

Mario