Sdílet prostřednictvím


Nastavení hodnot parametrů

Pokud chcete nastavit hodnotu parametru, aplikace jednoduše nastaví hodnotu proměnné vázané na parametr. Není důležité, pokud je tato hodnota nastavena, pokud je nastavena před spuštěním příkazu. Aplikace může nastavit hodnotu před nebo po vytvoření vazby proměnné a může změnit hodnotu tolikrát, kolikrát chce. Při spuštění příkazu ovladač jednoduše načte aktuální hodnotu proměnné. To je zvlášť užitečné, pokud je připravený příkaz proveden více než jednou; aplikace nastaví nové hodnoty pro některé nebo všechny proměnné při každém spuštění příkazu. Příklad najdete v části Připravené spuštění dříve v této části.

Pokud byla vyrovnávací paměť délky/indikátoru vázána ve volání SQLBindParameter, musí být před spuštěním příkazu nastavena na jednu z následujících hodnot:

  • Délka bajtu dat v vázané proměnné. Ovladač zkontroluje tuto délku pouze v případě, že je proměnná znak nebo binární (ValueType je SQL_C_CHAR nebo SQL_C_BINARY).

  • SQL_NTS. Data jsou řetězec ukončený hodnotou null.

  • SQL_NULL_DATA. Datová hodnota je NULL a ovladač ignoruje hodnotu vázané proměnné.

  • SQL_DATA_AT_EXEC nebo výsledek makra SQL_LEN_DATA_AT_EXEC. Hodnota parametru je odeslána pomocí SQLPutData. Další informace najdete v části Odesílání dlouhých dat dále v této části.

Následující tabulka ukazuje hodnoty vázané proměnné a vyrovnávací paměti délky/ukazatele, kterou aplikace nastaví pro různé hodnoty parametrů.

Parameter

value
Parameter

(SQL)

datový typ
Proměnná (C)

datový typ
Hodnota v

mez

proměnná
Hodnota v

délka/indikátor

buffer[d]
"ABC" SQL_CHAR SQL_C_CHAR ABC\0[a] SQL_NTS nebo 3
10 SQL_INTEGER SQL_C_SLONG 10 --
10 SQL_INTEGER SQL_C_CHAR 10\0[a] SQL_NTS nebo 2
13:00 SQL_TYPE_TIME SQL_C_TYPE_TIME 13 0,0[b] --
13:00 SQL_TYPE_TIME SQL_C_CHAR {t '13:00:00'}\0[a], [c] SQL_NTS nebo 14
NULA SQL_SMALLINT SQL_C_SSHORT -- SQL_NULL_DATA

[a] \0 představuje znak ukončení s hodnotou null. Znak ukončení s hodnotou null je vyžadován pouze v případě, že je hodnota v vyrovnávací paměti délky nebo indikátoru SQL_NTS.

[b] Čísla v tomto seznamu jsou čísla uložená v polích struktury TIME_STRUCT.

[c] Řetězec používá klauzuli úniku data ODBC. Další informace najdete v části Literály data, času a časového razítka.

[d] Ovladače musí vždy zkontrolovat tuto hodnotu a zjistit, zda se jedná o zvláštní hodnotu, například SQL_NULL_DATA.

To, co ovladač dělá s hodnotou parametru v době provádění, je závislý na ovladači. V případě potřeby ovladač převede hodnotu z datového typu C a délku bajtu vázané proměnné na datový typ SQL, přesnost a měřítko parametru. Ve většině případů ovladač odešle hodnotu do zdroje dat. V některých případech formátuje hodnotu jako text a vloží ji do příkazu SQL před odesláním příkazu do zdroje dat.