pomocná procedura pro zápis dat do DI - hlavně pro soubory sestávající z více než jednoho řádku EcENTITY
Zdrojový kód:
-- =============================================
-- Autor: Bronislav SIMUNEK
-- Datum vytvoření: 2016-07-01
-- Popis: Vložit požadavek na přenos dat
-- =============================================
CREATEPROCEDURE[dbo].[EcWriteEntity]@EntNameNVARCHAR (100),@BulkIDINT=-1OUT,@EntClassIDNVARCHAR (10)='ITEM'ASBEGIN--check mandatory fields:IF @EntClassID ISNULLBEGINRAISERROR('@EntClassID parameter is NULL',16,1);RETURN-1;ENDIF @EntName ISNULLBEGINRAISERROR('@EntName parameter is NULL',16,1);RETURN-1;END-- SET NOCOUNT ON added to prevent extra result sets from interfering with SELECT statements :SETNOCOUNTON;DECLARE @InsertedID BIGINT;DECLARE@resultTABLE (bidint,ridbigint);IF @BulkID ISNULLOR @BulkID <0BEGININSERT INTO EcENTITY (ent_class_id,name,comm_dir,bulk_id)OUTPUT INSERTED.bulk_id, INSERTED.id INTO @resultVALUES(@EntClassID,@EntName,1,ISNULL((SELECTMAX(bulk_id)FROMEcENTITY),0)+1);ENDELSEBEGININSERT INTO EcENTITY (ent_class_id,name,comm_dir,bulk_id)OUTPUT INSERTED.bulk_id,INSERTED.ID INTO @resultVALUES ( @EntClassID, @EntName, 1, ISNULL((SELECTMAX(bulk_id) FROM EcENTITY), 0) +1);ENDELSEBEGININSERT INTO EcENTITY (ent_class_id, name, comm_dir, bulk_id)OUTPUT INSERTED.bulk_id, INSERTED.ID INTO @resultVALUES ( @EntClassID, @EntName, 1, @BulkID);ENDSET @BulkID = (SELECTTOP1 bid FROM @result);SET @InsertedID = (SELECTTOP1 rid FROM @result);RETURN @InsertedID;END
Název subjektu - popis viz tabulka EcENTITY, pole "name".
@BulkId
int Nepovinné
InputOutput
Žádost o převod bulk_id - viz poznámky v popisu tabulky EcENTITY
použít hodnotu NULL pro vytvoření prvního řádku
EcENTITY;
procedura vytvoří novou hodnotu bulk_id a předá ji zpět.
pro zápis dalších řádků EcENTITY (v rámci jednoho hromadného zápisu) použijte hodnotu, kterou tato procedura vrátila v tomto parametru při zápisu prvního řádku EcENTITY.