Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

BigasBass

Stored Procedure

Recommended Posts

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

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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.