Sdílet prostřednictvím


Parametry výrazu

Parametr je proměnná v příkazu SQL. Předpokládejme například, že tabulka Parts obsahuje sloupce s názvem PartID, Description a Price. Přidání části bez parametrů by vyžadovalo vytvoření příkazu SQL, například:

INSERT INTO Parts (PartID, Description, Price) VALUES (2100, 'Drive shaft', 50.00)  

I když tento příkaz vloží nové pořadí, není to vhodné řešení pro aplikaci pro zadávání objednávek, protože hodnoty, které se mají vložit, nelze v aplikaci pevně zakódovat. Alternativou je vytvoření příkazu SQL za běhu pomocí hodnot, které se mají vložit. To také není dobré řešení, protože složitost vytváření příkazů za běhu programu. Nejlepším řešením je nahradit prvky klauzule VALUES otazníky (?) nebo značkami parametrů:

INSERT INTO Parts (PartID, Description, Price) VALUES (?, ?, ?)  

Značky parametrů jsou pak vázány na proměnné aplikace. Pokud chcete přidat nový řádek, musí aplikace nastavit pouze hodnoty proměnných a provést příkaz. Ovladač pak načte aktuální hodnoty proměnných a odešle je do zdroje dat. Pokud se příkaz spustí vícekrát, aplikace může proces ještě zefektivnit tím, že příkaz připraví.

Příkaz, který je právě zobrazený, může být pevně zakódován v aplikaci pro zadávání objednávek pro vložení nového řádku. Značky parametrů ale nejsou omezeny na vertikální aplikace. Pro každou aplikaci usnadňují obtížnost vytváření SQL příkazů za běhu tím, že se vyhýbají převodům do a z textu. Právě zobrazené ID části je například pravděpodobně uloženo v aplikaci jako celé číslo. Pokud je příkaz SQL vytvořen bez značek parametrů, musí aplikace převést ID části na text a zdroj dat ho musí převést zpět na celé číslo. Pomocí značky parametru může aplikace odeslat ID části ovladači jako celé číslo, které ho obvykle může odeslat do zdroje dat jako celé číslo. Tím se ušetří dva převody. U dlouhých datových hodnot je to velmi důležité, protože textové formy těchto hodnot často překračují povolenou délku příkazu SQL.

Parametry jsou platné pouze na určitých místech v příkazech SQL. Například nejsou povoleny v seznamu select (seznam sloupců, které mají být vráceny příkazem SELECT ), ani nejsou povoleny jako oba operandy binárního operátoru, jako je rovnítko (=), protože by nebylo možné určit typ parametru. Obecně platí, že parametry jsou platné pouze v příkazech DML (Data Manipulation Language) a ne v příkazech DDL (Data Definition Language). Další informace naleznete v tématu Značky parametrů v dodatku C: Gramatika SQL.

Když příkaz SQL vyvolá proceduru, lze použít pojmenované parametry. Pojmenované parametry jsou identifikovány jejich názvy, nikoli jejich umístěním v příkazu SQL. Mohou být vázány voláním SQLBindParameter, ale parametr je identifikován SQL_DESC_NAME polem IPD (popisovač parametru implementace), nikoli parametrem ParameterNumbersqlBindParameter. Mohou být také vázány voláním SQLSetDescField nebo SQLSetDescRec. Další informace o pojmenovaných parametrech naleznete v části Parametry vazby podle názvu (pojmenované parametry) dále v této části. Další informace o popisovačích naleznete v tématu Popisovače.

Tato část obsahuje následující témata.