trigger else ejemplos con and mysql database stored-procedures if-statement

else - procedure con if mysql



usando "if" y "else" Procedimientos almacenados MySQL (3)

Tengo algunas dificultades al intentar crear este procedimiento almacenado, cualquier tipo de ayuda es bienvenida:

create procedure checando(in nombrecillo varchar(30), in contrilla varchar(30), out resultado int) begin if exists (select * from compas where nombre = nombrecillo and contrasenia = contrilla) then set resultado = 0; else if exists (select * from compas where nombre = nombrecillo) then set resultado = -1; else set resultado = -2; end if; end;

La mesa en la que estoy trabajando es:

+-------------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------------+-------------+------+-----+---------+-------+ | Nombre | varchar(30) | YES | | NULL | | | contrasenia | varchar(30) | YES | | NULL | | +-------------+-------------+------+-----+---------+-------+


Creo que esta construcción: if exists (select... es específico para MS SQL. En MySQL EXISTS predicado le dice si la subconsulta encuentra alguna fila y se usa de esta manera: SELECT column1 FROM t1 WHERE EXISTS (SELECT * FROM t2);

Puede volver a escribir las líneas de código anteriores de esta manera:

DELIMITER $$ CREATE PROCEDURE `checando`(in nombrecillo varchar(30), in contrilla varchar(30), out resultado int) BEGIN DECLARE count_prim INT; DECLARE count_sec INT; SELECT COUNT(*) INTO count_prim FROM compas WHERE nombre = nombrecillo AND contrasenia = contrilla; SELECT COUNT(*) INTO count_sec FROM FROM compas WHERE nombre = nombrecillo; if (count_prim > 0) then set resultado = 0; elseif (count_sec > 0) then set resultado = -1; else set resultado = -2; end if; SELECT resultado; END


El problema es que, o bien no lo has cerrado, o necesitas un elseif :

create procedure checando( in nombrecillo varchar(30), in contrilla varchar(30), out resultado int) begin if exists (select * from compas where nombre = nombrecillo and contrasenia = contrilla) then set resultado = 0; elseif exists (select * from compas where nombre = nombrecillo) then set resultado = -1; else set resultado = -2; end if; end;


puede utilizar CASE WHEN como sigue para alcanzar el IF como otra ELSE .

SELECT FROM A a LEFT JOIN B b ON a.col1 = b.col1 AND (CASE WHEN a.col2 like ''0%'' then TRIM(LEADING ''0'' FROM a.col2) ELSE substring(a.col2,1,2) END )=b.col2;

ps: por si alguien lo necesita de esta manera.