using "if" and "else" Stored Procedures MySQL
The problem is you either haven't closed your if
or you need an 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;
I think that this construct: if exists (select...
is specific for MS SQL. In MySQL EXISTS
predicate tells you whether the subquery finds any rows and it's used like this: SELECT column1 FROM t1 WHERE EXISTS (SELECT * FROM t2);
You can rewrite the above lines of code like this:
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
you can use CASE
WHEN
as follow as achieve the as IF
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;
p.s:just in case somebody needs this way.