Udostępnij przez


Ustawianie wartości parametrów

Aby ustawić wartość parametru, aplikacja po prostu ustawia wartość zmiennej powiązanej z parametrem. Nie jest ważne, gdy ta wartość jest ustawiona, o ile jest ustawiona przed wykonaniem instrukcji. Aplikacja może ustawić wartość przed lub po powiązaniu zmiennej i może zmienić wartość tyle razy, ile chce. Po wykonaniu instrukcji sterownik po prostu pobiera bieżącą wartość zmiennej. Jest to szczególnie przydatne, gdy przygotowana instrukcja jest wykonywana więcej niż raz; aplikacja ustawia nowe wartości dla niektórych lub wszystkich zmiennych za każdym razem, gdy instrukcja jest wykonywana. Aby zapoznać się z tym przykładem, zobacz Przygotowanie wykonania we wcześniejszej części tej sekcji.

Jeśli bufor długości/wskaźnika został powiązany podczas wywołania metody SQLBindParameter, przed wykonaniem zapytania należy ustawić jedną z następujących wartości:

  • Długość bajtów danych w zmiennej powiązanej. Sterownik sprawdza tę długość tylko wtedy, gdy zmienna jest typu znakowego lub binarnego (ValueType jest SQL_C_CHAR lub SQL_C_BINARY).

  • SQL_NTS. Dane są ciągiem zakończonym o wartości null.

  • SQL_NULL_DATA. Wartość danych ma wartość NULL, a sterownik ignoruje wartość powiązanej zmiennej.

  • SQL_DATA_AT_EXEC lub wynik makra SQL_LEN_DATA_AT_EXEC. Wartość parametru ma zostać wysłana za pomocą funkcji SQLPutData. Aby uzyskać więcej informacji, zobacz Wysyłanie długich danych w dalszej części tej sekcji.

W poniższej tabeli przedstawiono wartości zmiennej powiązanej oraz bufor długości/wskaźnika ustawiany przez aplikację dla różnych wartości parametrów.

Parameter

value
Parameter

(SQL)

typ danych
Zmienna (C)

typ danych
Wartość w

granica

zmienna
Wartość w

długość/wskaźnik

buffer[d]
"ABC" SQL_CHAR SQL_C_CHAR ABC\0[a] SQL_NTS lub 3
10 SQL_INTEGER SQL_C_SLONG 10 --
10 SQL_INTEGER SQL_C_CHAR 10\0[a] SQL_NTS lub 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 lub 14
ZERO SQL_SMALLINT SQL_C_SSHORT -- SQL_NULL_DATA

[a] "\0" reprezentuje znak zakończenia o wartości null. Znak końca null jest wymagany tylko wtedy, gdy wartość w buforze długości/wskaźnika to SQL_NTS.

[b] Liczby na tej liście to liczby przechowywane w polach struktury TIME_STRUCT.

[c] Ciąg używa klauzuli ucieczki daty ODBC. Aby uzyskać więcej informacji, zobacz Literały daty, godziny i sygnatury czasowej.

[d] Sterowniki muszą zawsze sprawdzać tę wartość, aby sprawdzić, czy jest to wartość specjalna, taka jak SQL_NULL_DATA.

To, co sterownik robi z wartością parametru w czasie wykonywania, jest zależne od sterownika. W razie potrzeby sterownik konwertuje wartość z typu danych C i długości bajtów powiązanej zmiennej na typ danych SQL, precyzję i skalę parametru. W większości przypadków sterownik wysyła wartość do źródła danych. W niektórych przypadkach formatuje wartość jako tekst i wstawia ją do instrukcji SQL przed wysłaniem instrukcji do źródła danych.