-1
我需要将更改存储在我们的发票系统中以将其导出到帐户系统(这是第三方应用程序)。MySQL存储过程与if then else语句的问题
我想要做的是添加两个触发器。
ON INSERT:一个新的发票时,它必须被标记为另一台新的,所以在接下来的迁移,产生此时,相应的ASCII导入它的会计制度。
ON UPDATE:这有点复杂,这可能发生在发票被修改或者发票被支付/或者被标记为支付并且最终没有支付时。
两个触发器都调用相同的过程。
DROP PROCEDURE IF EXISTS `marca_factura_modificada`;
DELIMITER |
CREATE PROCEDURE `marca_factura_modificada`(IN nempresa_in int, IN nfactura_in int, IN cany_in char(2), IN cobrada boolean )
BEGIN
DECLARE existeix_factura INT;
DECLARE abans_afegir_factura INT;
DECLARE abans_afegir_cobrament INT;
SELECT NFactura,afegir_factura,afegir_cobrament
INTO existeix_factura,abans_afegir_factura,abans_afegir_cobrament
FROM factures_modificades
WHERE NEmpresa = nempresa_in
AND NFactura = nfactura_in
AND CAny = cany_in
LIMIT 1;
IF existeix_factura IS NULL THEN
IF new.DataFactura = CURDATE() THEN
IF (new.LComptat = 1 OR new.LCreditCobrat = 1) THEN
INSERT INTO factures_modificades (NEmpresa, NFactura, CAny,afegir_factura,afegir_cobrament)
VALUES (nempresa_in, nfactura_in, cany_in,1,1);
ELSE
INSERT INTO factures_modificades (NEmpresa, NFactura, CAny,afegir_factura,afegir_cobrament)
VALUES (nempresa_in, nfactura_in, cany_in,1,0);
END IF
ELSE
/* Si no és d'avui i no hi ha registre es que ja es va afegir la factura en el seu dia */
INSERT INTO factures_modificades (NEmpresa, NFactura, CAny,afegir_factura,afegir_cobrament)
VALUES (nempresa_in, nfactura_in, cany_in,0,1);
END IF
ELSE
IF(cobrada = 0 AND abans_afegir_factura = 0) THEN
DELETE FROM factures_modificades WHERE NEmpresa = nempresa_in AND NFactura = nfactura_in AND CAny = cany_in LIMIT 1;
ELSEIF (cobrada = 1 AND abans_afegir_cobrament = 0) THEN
UPDATE factures_modificades SET afegir_cobrament = 1 WHERE NEmpresa = nempresa_in AND NFactura = nfactura_in AND CAny = cany_in;
ELSEIF (cobrada = 0 AND abans_afegir_cobrament = 1) THEN
UPDATE factures_modificades SET afegir_cobrament = 0 WHERE NEmpresa = nempresa_in AND NFactura = nfactura_in AND CAny = cany_in;
END IF
END IF
END
|
DELIMITER ;
但是在MySQL 5.5(我认为这并不工作在IF THEN ELSE代码中的一些问题,但我没有看到哪里。
这是一个复杂的问题,有一个存储过程可以“不工作”很多,很多方面请详细说明是什么问题,您有 –
。。问题出现在“INSERT INTO factures_modificades(NEmpresa,NFactura,CAny,afegir_factura,afegir_cobrament)VALUES(nempresa_in,nfactura_in,cany_in,0,1);”这个在第二个else之后。我不知道,但我认为哪个是坏的是IF THEN ELSE声明......有没有办法将它们分开?我的意思是像在PHP中,如果(某事){some_stuff(); } else if(something_else){that();} else {another_stuff();} – MiQUEL