1. Dotaz z uložené procedury

    Article: AN0001641Updated:

    V některých případech je složité získat data pomocí jednoho Select příkazu. Systém ObjectGears umožňuje načíst data i z uložené procedury. Postup je velmi jednoduchý. Stačí vytvořit uloženou proceduru, která splňuje níže popsané předpoklady.

    Procedura vytvoří dočasnou tabulku ##tmp, kterou naplní daty. Systém ObjectGears proceduru zavolá, načte záznamy z této tabulky a na závěr tabulku smaže.

    Postup vytvoření volání

    1. Vytvořte uloženou proceduru, která vytvoří dočasnou tabulku s názvem ##tmp. V proceduře libovolným způsobem získejte výsledná data a naplňte jimi tuto tabulku.

    CREATE PROCEDURE procedure_name
    AS
    BEGIN
    create table ##tmp
    (
      id int,
      code varchar(100),
      name varchar(100),
      [enabled] bit
    )

    insert into ##tmp
    SELECT id, code, name, [enabled] FROM mytable
    END

    2. V systému ObjectGears vytvořte nový dotaz a do definice SQL dotazu napište následující příkaz, kde procedure_name je název vaší uložené procedury:

    exec procedure_name

    Předání přihlášeného uživatele do uložené procedury

    V dotazu je možné použít proměnnou {{ loginuser.id }}, která při spuštění dotazu vrátí ID přihlášeného uživatele. Tuto hodnotu je možné předat i do uložené procedury. Stejným způsobem je možné předat i jiné parametry.

    Pro předání proveďte následující změny:

    1) Uložené proceduře přidejte jeden vstupní parametr. Jeho povinnost si určete podle toho, jak jej budete využívat (povinně či nepovinně):

    CREATE PROCEDURE procedure_name
      @userId int = null
    AS
    BEGIN
    create table ##tmp
    (
      id int,
      code varchar(100),
      name varchar(100),
      [enabled] bit
    )

    insert into ##tmp
      SELECT id, code, name, [enabled]
        FROM mytable
        Where @userId is null or ( @userId is not null and @userId = userColumn)
    END

    2) Do volání uložené procedury přidejte parametr:

    exec procedure_name {{ loginuser.id }}

×