Sames Davis 0 Denunciar post Postado Setembro 24, 2015 Olá pessoal, Estou com problemas de erro de sintaxe nessa procedure onde a intenção é receber dois parametros e apenas inserir na tabela de log se não existir nessa mesma tabela de log. ************************************************************************************************************************ CREATE DEFINER = 'root'@'localhost' PROCEDURE `spEntidadesBuscar`( IN pOrdem INTEGER(11), IN pUser INTEGER(11) ) NOT DETERMINISTIC CONTAINS SQL SQL SECURITY DEFINER COMMENT '' IF NOT EXISTS (SELECT * FROM `tblentidades_log` WHERE ordem_entidade = pOrdem AND ordem_user = pUser) BEGIN INSERT INTO `tblentidades_log` ( Ordem_entidade,Ordem_user) VALUES ( pOrdem,pUser) ; END ************************************************************************************************************************ Está dando esse erro Error: Use near 'IF NOT EXISTS (SELECT * FROM `tblentidades_log` WHERE ordem_entidade = pOrdem AN' at lin9 Compartilhar este post Link para o post Compartilhar em outros sites
lokaodomau 61 Denunciar post Postado Setembro 24, 2015 Tente alterar o DELIMITER pra poder utilizar queries dentro da procedure, como é explicado neste link. DELIMITER $$ CREATE DEFINER = 'root'@'localhost' PROCEDURE `spEntidadesBuscar`( IN pOrdem INTEGER(11), IN pUser INTEGER(11) ) NOT DETERMINISTIC CONTAINS SQL SQL SECURITY DEFINER COMMENT '' IF NOT EXISTS (SELECT * FROM `tblentidades_log` WHERE ordem_entidade = pOrdem AND ordem_user = pUser) BEGIN INSERT INTO `tblentidades_log` ( Ordem_entidade,Ordem_user) VALUES ( pOrdem,pUser) ; END $$ DELIMITER ; Mas, qual é a PRIMARY KEY desta tabela? Se a PK desta tabela não for os dois campos, também existe a opção de criar outra chave composta, pra trabalhar como UNIQUE INDEX. (Como eu gosto de links, hehe) Ah, não se esqueça de voltar o DELIMITER para ; Compartilhar este post Link para o post Compartilhar em outros sites
Sames Davis 0 Denunciar post Postado Setembro 24, 2015 Infelizmente não funcionou, deu erro de sintaxe de novo essa tabela tem apenas esses dois campos que sao as duas chaves Compartilhar este post Link para o post Compartilhar em outros sites
lokaodomau 61 Denunciar post Postado Setembro 24, 2015 Se os dois são chave primária, então não pode haver um registro repetido, é uma situação causada pela PRIMARY KEY e UNIQUE INDEX, mas lembrando, deve ser uma chave composta, englobando as duas colunas. Compartilhar este post Link para o post Compartilhar em outros sites
Sames Davis 0 Denunciar post Postado Setembro 24, 2015 ok, mas o que devo mudar na sintaxe para que funcione? com ou sem DELIMITER, não funciona, dá erro de sintaxe Compartilhar este post Link para o post Compartilhar em outros sites
lokaodomau 61 Denunciar post Postado Setembro 24, 2015 Cara, não sei como poderia resolver, tente jogar o IF pra dentro do BEGIN. DELIMITER $$ CREATE DEFINER = 'root'@'localhost' PROCEDURE `spEntidadesBuscar`( IN pOrdem INTEGER(11), IN pUser INTEGER(11) ) NOT DETERMINISTIC CONTAINS SQL SQL SECURITY DEFINER COMMENT '' BEGIN IF NOT EXISTS (SELECT * FROM `tblentidades_log` WHERE ordem_entidade = pOrdem AND ordem_user = pUser) THEN INSERT INTO `tblentidades_log` ( Ordem_entidade,Ordem_user) VALUES ( pOrdem,pUser) ; END IF; END $$ DELIMITER ; Compartilhar este post Link para o post Compartilhar em outros sites