Aggiunta e refresh stored
This commit is contained in:
@@ -0,0 +1,40 @@
|
||||
DROP PROCEDURE IF EXISTS `stp_ProdBatch_insert`;
|
||||
|
||||
CREATE PROCEDURE `stp_ProdBatch_insert`(
|
||||
IN `pDescription` VARCHAR(255),
|
||||
IN `pDueDate` DATETIME,
|
||||
IN `pPrefix` VARCHAR(10), -- prefisso x Batch
|
||||
IN `pYear` INT -- anno di riferimento x Tag
|
||||
)
|
||||
LANGUAGE SQL
|
||||
NOT DETERMINISTIC
|
||||
CONTAINS SQL
|
||||
SQL SECURITY DEFINER
|
||||
COMMENT 'Insert di una colonna Batch con calcolo contestuale del relativo TAG'
|
||||
BEGIN
|
||||
DECLARE vIdx INT;
|
||||
DECLARE vYear INT;
|
||||
DECLARE vNewBatchTag VARCHAR(50);
|
||||
DECLARE vNewID INT;
|
||||
|
||||
SET vYear = IF(pYear IS NULL OR pYear = 0, YEAR(CURDATE()), pYear);
|
||||
|
||||
-- 1. Recuperiamo il contatore (riutilizzando la tua GetNextCounter)
|
||||
CALL stp_counterGetNext(vYear, pPrefix, vIdx);
|
||||
|
||||
-- Costruiamo il BatchTag finale (BC.202600000001)
|
||||
SET vNewBatchTag = UPPER(CONCAT(pPrefix, vYear, LPAD(HEX(vIdx), 8, '0')));
|
||||
|
||||
-- 2. Inserimento del record
|
||||
INSERT INTO production_batch (Description, DueDate, BatchTag)
|
||||
VALUES (pDescription, pDueDate, vNewBatchTag);
|
||||
|
||||
-- 3. Recuperiamo l'ID appena generato (Auto Increment)
|
||||
SET vNewID = LAST_INSERT_ID();
|
||||
|
||||
-- 4. Restituzione del record completo (i nomi colonne devono coincidere col Modello C#)
|
||||
SELECT *
|
||||
FROM production_batch
|
||||
WHERE ProdBatchID = vNewID;
|
||||
|
||||
END;
|
||||
@@ -0,0 +1,46 @@
|
||||
DROP PROCEDURE IF EXISTS `stp_ProdOdl_UpdateTag`;
|
||||
|
||||
CREATE PROCEDURE `stp_ProdOdl_UpdateTag`(
|
||||
IN pProdBatchID INT,
|
||||
IN pPrefix VARCHAR(10), -- prefisso x ODL
|
||||
IN pYear INT
|
||||
)
|
||||
LANGUAGE SQL
|
||||
NOT DETERMINISTIC
|
||||
CONTAINS SQL
|
||||
SQL SECURITY DEFINER
|
||||
COMMENT 'Fix colonna calcolata OdlTag nel nuovo formato con contatori annuali, dopo creazione x ricerca e indicizzazione'
|
||||
main_block: BEGIN
|
||||
DECLARE vYear INT;
|
||||
DECLARE vCount INT;
|
||||
DECLARE vStart INT;
|
||||
|
||||
SET vYear = IF(pYear IS NULL OR pYear = 0, YEAR(CURDATE()), pYear);
|
||||
|
||||
SELECT COUNT(*) INTO vCount
|
||||
FROM production_odl
|
||||
WHERE OdlTag IS NULL
|
||||
OR OdlTag = ''
|
||||
OR (ProdBatchID = pProdBatchID AND pProdBatchID > 0);
|
||||
|
||||
IF vCount = 0 THEN
|
||||
LEAVE main_block;
|
||||
END IF;
|
||||
|
||||
CALL stp_counterGetNextBlock(vYear, pPrefix, vCount, vStart);
|
||||
|
||||
UPDATE production_odl po
|
||||
JOIN (
|
||||
SELECT PrododlID,
|
||||
ROW_NUMBER() OVER (ORDER BY ProdODLID) AS rn
|
||||
FROM production_odl
|
||||
WHERE OdlTag IS NULL
|
||||
OR OdlTag = ''
|
||||
OR (ProdBatchID = pProdBatchID AND pProdBatchID > 0)
|
||||
) AS x ON x.ProdODLID = po.ProdODLID
|
||||
SET po.OdlTag = CONCAT(
|
||||
pPrefix, vYear, '.',
|
||||
LPAD(HEX(vStart + x.rn -1), 8, '0')
|
||||
);
|
||||
|
||||
END main_block;
|
||||
@@ -35,7 +35,7 @@ BEGIN
|
||||
UPDATE utils_counter
|
||||
SET Counter = vOld
|
||||
WHERE RefYear = pYear AND CountName = pName;
|
||||
|
||||
END IF;
|
||||
|
||||
SET pValue = vOld;
|
||||
END
|
||||
|
||||
@@ -27,6 +27,7 @@ BEGIN
|
||||
INSERT INTO utils_counter (RefYear, CountName, Counter)
|
||||
VALUES (pYear, pName, vNew)
|
||||
ON DUPLICATE KEY UPDATE Counter = VALUES(Counter);
|
||||
|
||||
ELSE
|
||||
-- Incremento esistente
|
||||
SET vNew = vOld + pCount;
|
||||
|
||||
Reference in New Issue
Block a user