Przypisywanie przestrzeni dyskowej

Dotyczy:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

Aplikacja może przypisać pamięć danych dla wyników przed lub po wykonaniu instrukcji SQL. Jeśli aplikacja najpierw przygotuje lub wykona polecenie SQL, może zapytać o zbiór wyników przed przydzieleniem pamięci dla wyników. Na przykład, jeśli zbiór wyników jest nieznany, aplikacja musi pobrać liczbę kolumn, zanim będzie mogła przypisać im miejsce pamięci.

Aby powiązać pamięć dla kolumny danych, aplikacja wywołuje SQLBindCol i przekazuje go:

  • Typ danych, do którego dane mają być konwertowane.

  • Adres bufora wyjściowego dla danych.

    Aplikacja musi przydzielić ten bufor, który musi być wystarczająco duży, aby pomieścić dane w formie, w jaką zostały przekształcone.

  • Długość bufora wyjściowego.

    Ta wartość jest pomijana, jeśli zwrócone dane mają stałą szerokość w C, na przykład całkowitą, rzeczywistą lub datę.

  • Adres bufora pamięci, w którym zwraca się liczbę bajtów dostępnych danych.

Aplikacja może również wiązać kolumny zbioru wyników z tablicami zmiennych programowych, aby wspierać pobieranie wierszy zbioru wyników w blokach. Istnieją dwa różne typy wiązania tablic:

  • Powiązanie kolumnowe kończy się, gdy każda kolumna jest przypisana do własnej tablicy zmiennych.

    Wiązanie kolumnowe określa się przez wywołanie SQLSetStmtAttr z atrybutem ustawionym na SQL_ATTR_ROW_BIND_TYPE i ValuePtr na SQL_BIND_BY_COLUMN. Wszystkie tablice muszą mieć taką samą liczbę elementów.

  • Wiązanie wierszowe kończy się, gdy wszystkie parametry w instrukcji SQL są powiązane jako jednostka z tablicą struktur zawierających poszczególne zmienne dla parametrów.

    Wiązanie wierszowe jest określane przez wywołanie SQLSetStmtAttr z atrybutem ustawionym na SQL_ATTR_ROW_BIND_TYPE oraz ValuePtr na rozmiar struktury zawierającej zmienne, które otrzymają kolumny zbioru wyników.

Aplikacja ustawia SQL_ATTR_ROW_ARRAY_SIZE także na liczbę elementów w tablicach kolumn lub wierszy oraz SQL_ATTR_ROW_STATUS_PTR i SQL_ATTR_ROWS_FETCHED_PTR.