Dela via


Ange parametervärden

För att ange värdet för en parameter anger programmet helt enkelt värdet för variabeln som är bunden till parametern. Det är inte viktigt när det här värdet anges, så länge det anges innan instruktionen körs. Programmet kan ange värdet före eller efter bindning av variabeln och det kan ändra värdet så många gånger som det vill. När instruktionen körs hämtar drivrutinen helt enkelt variabelns aktuella värde. Detta är särskilt användbart när en förberedd instruktion körs mer än en gång. programmet anger nya värden för vissa eller alla variabler varje gång instruktionen körs. Ett exempel på detta finns i Förberedd körning tidigare i det här avsnittet.

Om en längd-/indikatorbuffert var bunden i anropet till SQLBindParameter måste den anges till något av följande värden innan -instruktionen körs:

  • Bytelängden för data i den bundna variabeln. Drivrutinen kontrollerar endast den här längden om variabeln är tecken eller binär (ValueType är SQL_C_CHAR eller SQL_C_BINARY).

  • SQL_NTS. Data är en null-avslutad sträng.

  • SQL_NULL_DATA. Datavärdet är NULL och drivrutinen ignorerar värdet för den bundna variabeln.

  • SQL_DATA_AT_EXEC eller resultatet av makrot SQL_LEN_DATA_AT_EXEC. Värdet för parametern ska skickas med SQLPutData. Mer information finns i Skicka långa data senare i det här avsnittet.

I följande tabell visas värdena för den bundna variabeln och den längd/indikatorbuffert som programmet anger för en mängd olika parametervärden.

Parameter

värde
Parameter

(SQL)

datatyp
Variabel (C)

datatyp
Värde i

bunden

variable
Värde i

längd/indikator

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

[a] "\0" representerar ett nulltermineringstecken. Null-avslutningstecknet krävs endast om värdet i längd-/indikatorbufferten är SQL_NTS.

[b] Talen i den här listan är talen som lagras i fälten i TIME_STRUCT struktur.

[c] Strängen använder ODBC-datumrymningssatsen. Mer information finns i Datum, Tid och TidsstämpelLiteraler.

[d] Drivrutiner måste alltid kontrollera det här värdet för att se om det är ett särskilt värde, till exempel SQL_NULL_DATA.

Vad en drivrutin gör med ett parametervärde vid körning är drivrutinsberoende. Vid behov konverterar drivrutinen värdet från C-datatypen och bytelängden för den bundna variabeln till SQL-datatypen, precisionen och skalan för parametern. I de flesta fall skickar drivrutinen sedan värdet till datakällan. I vissa fall formaterar det värdet som text och infogar det i SQL-instruktionen innan instruktionen skickas till datakällan.