DBEXECUTEFIXED
DBEXECUTEFIXED je alternativa funkce DBEXECUTE, která podporuje parametry. Na rozdíl od funkce DBEXECUTE ji lze použít v cloudu i v místním prostředí a ve vlastních i rozšířených aplikacích.
Příkaz SQL je považován za fixní text, a proto nemůže přímo odkazovat na proměnné.
Je-li příkaz v nechráněné buňce, můžete aktualizovat hodnotu, kterou vrací, ale na rozdíl od DBEXECUTE nelze přidávat nové řádky.
V názvech parametrů se rozlišují malá a velká písmena.
Syntaxe
Vzorec DBEXECUTEFIXED má tyto parametry.
- Alias: Tato hodnota udává relační datové propojení, které definuje d/EPM Administration.
- Příkaz výběru: Tato možnost se využívá k získání dat z databáze. Jedná se o standardní příkaz SQL SELECT. Chcete-li povolit aktualizaci databáze, musí dotaz obsahovat primární klíč. Příkaz SQL SELECT může vrátit více hodnot z řádku, ale vzorec DBEXECUTEFIXED ignoruje všechny hodnoty kromě první. Chcete-li tedy vrátit a zpětně zapsat, hodnotu, která není primárním klíčem, nesmí být primární klíč není první hodnotou požadovanou příkazem. U zpětného zápisu musí být buňka obsahující dotaz nechráněna.
- Hodnoty parametru: Můžete použít jednohodnotové a vícehodnotové parametry. V příkazech SQL se odkazuje na jednohodotové parametry pomocí funkce
@[parametr_name]
. Na vícehodnotové parametry se odkazuje pomocí funkce@@[parameter_name]
. Hodnoty ve vícehodnotových parametrech musí být odděleny svislou čárou(|)
.
=DBEXECUTEFIXED("alias", "select_statement", {, "parameter"})
Názvy parametrů se automaticky přiřazují jako p1, p2 atd.
Příklad
V tomto příkladu vzorec vrátí název položky, kdy ID má hodnotu aktuálně uloženou v proměnné reportu rv_configs. items.ID
je primární klíč.
=DBEXECUTEFIXED("configdb", "SELECT items.name,items.ID FROM items WHERE Id=@p1",ReportVariables.rv_configs.Text)
items.id
je primární klíč. Pokud je vzorec nechráněná buňka a vrátí hodnotu, můžete hodnotu aktualizovat: v tomto příkladu název položky.
Vzhledem k tomu, že celý příkaz SQL je považován za text, není třeba řetězit hodnoty řetězce znaky &
, jak je nutné ve vzorcích DBEXECUTE:
=DBEXECUTE("configdb", "SELECT items.name,items.ID FROM items WHERE Id="&ReportVariables.rv_configs.Text)
=DBEXECUTE("configdb", "SELECT items.ID,items.name FROM items WHERE name='"&ReportVariables.rv_name.Text&"'")
Syntaxe zřetězení se liší, protože v prvním příkladu je odkazovaná hodnota číselná a druhá je textová.