Bom dia pessoal,
Andei dando uma pesquisada e não encontrei um exemplo como queria.
Hoje tenho um banco de dados Firebird, e estou trocando para MySQL. Estou programando em delphi e uso componentes da paleta DBX, Gostaria de entender as diferenças entre a sintaxe de a procedure MySQL e a Firebird. Como exemplo trouxe uma Store Proedure da minha base firebird e gostaria de saber como ficaria a mesma procedure em Mysql. Dessa forma vou consegui entender melhor as diferenças.
Essa procedure seleciona os items da tabela Itensentrada, onde o Numero da entrada é a que eu passo pelo parametro RCODENTRADa, e atualiza o estoque alimentando também uma outra tabela de histórico de produtos e clientes.
Não sei exatamente se no MySQL consigo fazer isso. Imagino que sim pois as linguagens são bem semelhantes...mas não acho a sintaxe correta para montar a Store Procedure.
CREATE PROCEDURE ATUALIZA_ESTOQUE_ENTRADA (
RCODENTRADA INTEGER)
AS
declare variable VCODENTRADA integer;
declare variable VCODCLIENTE integer;
declare variable VCODOBRA integer;
declare variable VCODPROD integer;
declare variable VQTDE float;
declare variable VVRUNITARIO numeric(15,2);
declare variable VTIPO char(1);
declare variable VSTATUS varchar(20);
begin
FOR SELECT I.codentrada, I.codobra, I.codproduto, I.quantidade, I.vrunitario
FROM ITENSENTRADA I
WHERE I.codentrada = :rcodentrada
INTO :vcodentrada, :vcodobra, :vcodprod, :vqtde, :vvrunitario do
BEGIN
vtipo = 'E';
SELECT E.codcliente, e.status
FROM ENTRADA e
WHERE E.codentrada = :rcodentrada
INTO :vcodcliente, :vstatus;
if (:vstatus = 'ABERTA' or :vstatus = 'FINALIZADA') then exit;
else
begin
UPDATE entrada e
SET e.status = 'FINALIZADA'
WHERE E.codentrada = :rcodentrada;
UPDATE PRODUTO P SET
P.estoque = P.estoque + :vqtde,
P.vrunitario = :vvrunitario
WHERE P.codproduto = :vcodprod;
INSERT INTO HISTORICOCLIENTES(CODMOV, CODCLIENTE, CODPRODUTO, QTDE, CODOBRA, TIPO) VALUES (:vcodentrada, :vcodcliente, :vcodprod, :vqtde, :vcodobra, :vtipo);
INSERT INTO HISTORICOPRODUTO (CODMOV, CODOBRA, CODCLIENTE, CODPROD, QTDE, VALOR, TIPO) VALUES (:vcodentrada, :vcodobra, :vcodcliente, :vcodprod, :vqtde, :vvrunitario, :vtipo);
end
END
END