# Uložená procedura EcWriteEntity

pomocná procedura pro zápis dat do DI - hlavně pro soubory sestávající z více než jednoho řádku EcENTITY

| **parametr**   | **typ**                                | **směr**    | **popis**                                                                                                                                                                                                                                                                                                                                                                                                            |
| -------------- | -------------------------------------- | ----------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **@EntName**   | <p>nvarchar (100)</p><p>Požadované</p> | Vstup       | Název subjektu - popis viz tabulka EcENTITY, pole "name".                                                                                                                                                                                                                                                                                                                                                            |
| **@BulkId**    | int Nepovinné                          | InputOutput | <p>Žádost o převod bulk\_id - viz poznámky v popisu tabulky EcENTITY</p><ul><li>použít hodnotu NULL pro vytvoření prvního řádku</li></ul><p>EcENTITY;</p><p>procedura vytvoří novou hodnotu bulk\_id a předá ji zpět.</p><ul><li>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.</li></ul> |
| **@EnClassID** | <p>nvarchar(10)</p><p>Volitelně</p>    | Vstup       | <p>Typ subjektu</p><p>pokud je vynecháno, použije se hodnota "ITEM".</p>                                                                                                                                                                                                                                                                                                                                             |
| **RetValue**   | bigint                                 | ReturnValue | EcENTITY.id vloženo                                                                                                                                                                                                                                                                                                                                                                                                  |

Zdrojový kód:

\-- =============================================

\-- Autor: Bronislav SIMUNEK

\-- Datum vytvoření: 2016-07-01

\-- Popis: Vložit požadavek na přenos dat

\-- =============================================&#x20;

```sql
    CREATEPROCEDURE[dbo].[EcWriteEntity]
@EntNameNVARCHAR (100),
@BulkIDINT=-1 OUT,
@EntClassIDNVARCHAR (10)='ITEM'
AS
BEGIN
    --check mandatory fields:
    IF @EntClassID IS NULL
    BEGIN 
        RAISERROR('@EntClassID parameter is NULL',16,1);
        RETURN-1;
    END
    IF @EntName IS NULL 
    BEGIN
        RAISERROR('@EntName parameter is NULL',16,1);
        RETURN-1;
    END
    -- SET NOCOUNT ON added to prevent extra result sets from interfering with SELECT statements :
    SET NOCOUNT ON;
    DECLARE @InsertedID BIGINT;
    DECLARE@resultTABLE (bidint,ridbigint);
    IF @BulkID IS NULL OR @BulkID < 0 
    BEGIN
        INSERT INTO EcENTITY
        (ent_class_id,name,comm_dir,bulk_id)
        OUTPUT INSERTED.bulk_id, INSERTED.id INTO @result
        VALUES(@EntClassID,@EntName,1,ISNULL((SELECTMAX(bulk_id)FROMEcENTITY),0)+1);
    END 
    ELSE
    BEGIN
        INSERT INTO EcENTITY
        (ent_class_id,name,comm_dir,bulk_id)
        OUTPUT INSERTED.bulk_id,INSERTED.ID INTO @result
        VALUES
        ( @EntClassID, @EntName, 1, ISNULL((SELECT MAX(bulk_id) FROM EcENTITY), 0) + 1);
    END
    ELSE
    BEGIN
        INSERT INTO EcENTITY
        (ent_class_id, name, comm_dir, bulk_id)
        OUTPUT INSERTED.bulk_id, INSERTED.ID INTO @result
        VALUES
        ( @EntClassID, @EntName, 1, @BulkID);
    END
    SET @BulkID = (SELECT TOP 1 bid FROM @result);
    SET @InsertedID = (SELECT TOP 1 rid FROM @result);
    RETURN @InsertedID;
END
```
