arena 0 Denunciar post Postado Maio 14, 2015 Bom dia! Já tentei de tudo! mas não encontrei qual o erro do código abaixo, alguém pode ajudar?1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 3 CREATE FUNCTION registro_prateleira(usuario integer) returns integer begin declare ret integer DEFAULT 0; if((select `registro_prateleira` from `prateleiras_codigo` as `pc` where `pc.cod_usuario` = usuario) is null) then insert into `prateleiras_codigo` (`cod_usuario`, `registro_prateleiras`) values(usuario,1) set ret=1; ELSE update `prateleiras_codigo` set `registro_prateleiras` = `registro_prateleiras`+1 where `cod_usuario`=usuario return (select `registro_prateleiras` from `prateleiras_codigo` as `pc` where `pc.cod_usuario` = usuario) end if; return ret; end; Compartilhar este post Link para o post Compartilhar em outros sites
lokaodomau 61 Denunciar post Postado Maio 14, 2015 Notei que está utilizando o ";", certifique-se de, antes de criar a function com mais de uma query, esteja utilizando "DELIMITER ||", e após o fim da criação voltar o DELIMITER para "DELIMITER ;". Exemplo: DELIMITER || # Ao fazer isso, o banco entende que "||" determina o fim da execução da Query # Isso evita que ocorra o erro, mas após voltar para ";" a execução ocorre normalmente CREATE FUNCTION registro_prateleira(usuario integer) returns integer begin declare ret integer DEFAULT 0; if((select `registro_prateleira` from `prateleiras_codigo` as `pc` where `pc.cod_usuario` = usuario) is null) then insert into `prateleiras_codigo` (`cod_usuario`, `registro_prateleiras`) values(usuario,1) set ret=1; ELSE update `prateleiras_codigo` set `registro_prateleiras` = `registro_prateleiras`+1 where `cod_usuario`=usuario return (select `registro_prateleiras` from `prateleiras_codigo` as `pc` where `pc.cod_usuario` = usuario) end if; return ret; end; DELIMITER ; # Volta para o normal Não é obrigatório que seja "||", mas é uma sugestão. Compartilhar este post Link para o post Compartilhar em outros sites
arena 0 Denunciar post Postado Maio 15, 2015 Continua dando erro DELIMITER || CREATE FUNCTION registro_prateleira(usuario integer) returns integer begin declare ret integer DEFAULT 0; if((select `registro_prateleira` from `prateleiras_codigo` as `pc` where `pc.cod_usuario` = usuario) is null) then insert into `prateleiras_codigo` (`cod_usuario`, `registro_prateleiras`) values(usuario,1); set ret=1; ELSE update `prateleiras_codigo` set `registro_prateleiras` = `registro_prateleiras`+1 where `cod_usuario`=usuario; set ret = select `registro_prateleiras` from `prateleiras_codigo` as `pc` where `pc.cod_usuario` = usuario; end if; return ret; end; || DELIMITER ; Compartilhar este post Link para o post Compartilhar em outros sites
arena 0 Denunciar post Postado Maio 15, 2015 Resolvido! vlw! agora foi só erro na consulta Compartilhar este post Link para o post Compartilhar em outros sites