BigasBass 0 Denunciar post Postado Novembro 8, 2016 Olá pessoal, Criei a seguinte tabela e inseri os dados: CREATE TABLE saldo ( conta int(10) NOT NULL PRIMARY KEY, nome varchar(90) NOT NULL, saldo decimal(10,2) NOT NULL ); INSERT INTO saldo VALUES (1010, "Pedro Augusto", 2500), (1020, "José Nicácio", 800); Depois criei a procedure: DELIMITER $$ CREATE PROCEDURE alteracao_saldo (c_origem char(10), c_destino char(10), v_val decimal(10,2)) BEGIN IF ((c_origem != '') AND (c_destino != '') AND (v_val > 0)) THEN UPDATE saldo SET saldo = saldo - v_val WHERE conta = c_origem; UPDATE saldo SET saldo = saldo + v_val WHERE conta = c_destino; COMMIT; ELSE SELECT "Todos os parâmentros devem ser informados!" AS "Mensagem"; ROLLBACK; END IF; END$$ DELIMITER ; Beleza, quando faço a chamada da procedure: call alteracao_saldo(1010, 1020, 100) roda perfeitamente subtraindo da c_origem e somando na c_destino (podem testar), porém se eu colocar uma c_origem que não está cadastrada (Ex. 1050) ele continua somando na c_destino, como resolver isso, ou seja, somente somar na conta destino se v_val for realmente da c_origem, caso contrário não somar o saldo na c_origem. Façam o teste por gentileza e me ajudem a resolver. Obrigado. Compartilhar este post Link para o post Compartilhar em outros sites
Williams Duarte 431 Denunciar post Postado Novembro 15, 2016 Olá pessoal, Criei a seguinte tabela e inseri os dados: CREATE TABLE saldo ( conta int(10) NOT NULL PRIMARY KEY, nome varchar(90) NOT NULL, saldo decimal(10,2) NOT NULL ); INSERT INTO saldo VALUES (1010, "Pedro Augusto", 2500), (1020, "José Nicácio", 800); OK! Depois criei a procedure: DELIMITER $$ CREATE PROCEDURE alteracao_saldo (c_origem char(10), c_destino char(10), v_val decimal(10,2)) BEGIN IF ((c_origem != '') AND (c_destino != '') AND (v_val > 0)) THEN UPDATE saldo SET saldo = saldo - v_val WHERE conta = c_origem; UPDATE saldo SET saldo = saldo + v_val WHERE conta = c_destino; COMMIT; ELSE SELECT "Todos os parâmentros devem ser informados!" AS "Mensagem"; ROLLBACK; END IF; END$$ DELIMITER ; Não, você copiou, por isso não sabe nem o que esta fazendo. http://forum.imasters.com.br/topic/454365-usar-procedure-no-banco-de-dados-ou-controlar-tudo-no-php/?p=1797602 Compartilhar este post Link para o post Compartilhar em outros sites
BigasBass 0 Denunciar post Postado Novembro 16, 2016 Não entendi o que você quis dizer Williams, esse código é de um curso de MySQL que estou fazendo online, provavelmente outras pessoas fizeram também, se eu não soubesse o que estaria fazendo nem postaria minha dúvida, provavelmente acho que você não entendeu. Compartilhar este post Link para o post Compartilhar em outros sites