Ukázka pracovního postupu
zde je základní ukázka, jak zpracovat data a nahlásit zpracování zpět do datového rozhraní:
-- proměnná pro uložení hromadného ID, které váš systém právě zpracovává DECLARE
@BulkId INT = -1;
-- proměnná pro uložení EcENTITY.id nejvyšší entity v rámci aktuálního hromadného ID
DECLARE @EntId BIGINT = -1;
-- získáte další čekající hromadné ID (data čekající na zpracování systémem):
SET @BulkId = (SELECT TOP 1 bulk_id FROM EcENTITY WHERE comm_dir=0 AND comm_status=0 ORDER BY id)
-- update comm_status - hromadné zpracování bylo zahájeno
UPDATE EcENTITY SET comm_status = 1, processed1=GETDATE() WHERE bulk_id = @BulkId
-- získáte horní entitu hromadné struktury
SET @EntId = (SELECT TOP 1 id FROM EcENTITY WHERE bulk_id=@BulkId AND EcENTITY. id NOT IN (SELECT
EcASSOC. ent_id_child FROM EcASSOC))
-- získejte seznam asociací pro nejvyšší entitu - asociace první úrovně SELECT *
FROM EcASSOC WHERE ent_id_parent=@EntId;
-- získejte seznam odkazů pro nejvyšší entitu SELECT *
FROM EcLINK WHERE ent_id=@EntId;
-- získá seznam podřízených entit v první úrovni
SELECT * FROM EcENTITY WHERE EcENTITY. id IN (SELECT ent_id_child FROM EcASSOC WHERE
ent_id_parent=@EntId);
-- XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
-- zapisovat data do systému
-- XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
-- nahlásit, že váš systém úspěšně zpracoval hromadné zásilky.
UPDATE EcENTITY SET comm_status = 7, processed2=GETDATE() WHERE bulk_id = @BulkId
-- nebo nahlásit chybu
INSERT INTO EcLOG (ent_id, level, message) VALUES (@EntId, 1, 'unknown Unit of Measure')
UPDATE EcENTITY SET comm_status = 9, processed2=GETDATE() WHERE bulk_id = @BulkId
Další vzorky
//výběr všech entit v rámci hromadného výběru - sloupec bulk_top (BIT) je přidán k identifikaci nejvyšší entity v
hromadném výběru.
SELECT CAST(CASE WHEN EXISTS(SELECT * FROM EcASSOC WHERE EcENTITY. id=EcASSOC. ent_id_child) THEN 0
ELSE 1 END AS BIT) AS bulk_top, * FROM EcENTITY WHERE bulk_id=@BulkId ORDER BY id DESC
//všechny záznamy asociace EcASSOC spojené s atributy podřízené entity (všechny hromadné asociace)
SELECT EcENTITY.*, EcASSOC.* FROM EcASSOC LEFT JOIN EcENTITY ON EcASSOC. ent_id_child=EcENTITY. id
WHERE (EcENTITY.bulk_id=@BulkId)
Varování
nikdy neaktualizujte (neměňte) hodnotu EcENTITY.comm_dir v hromadném souboru ! celý hromadný soubor musí mít jedinou hodnotu EcENTITY.comm_dir !