pola deskryptora parametrów Table-Valued
Dotyczy:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)
Obsługa parametrów wartości tabeli obejmuje nowe pola specyficzne dla programu SQL Server w deskryptorach parametrów aplikacji ODBC (APD) i deskryptory parametrów implementacji (IPD).
Uwagi
Nazwa | Lokalizacja | Typ | Opis |
---|---|---|---|
SQL_CA_SS_TYPE_NAME | Adres IPD | SQLTCHAR* | Nazwa typu serwera parametru o wartości tabeli. Gdy nazwa typu parametru wartości tabeli jest określona w wywołaniu metody SQLBindParameter, zawsze musi być określona jako wartość Unicode, nawet w aplikacjach, które są tworzone jako aplikacje ANSI. Wartość używana dla parametru StrLen_or_IndPtr powinna być SQL_NTS lub długość ciągu nazwy pomnożonej przez sizeof(WCHAR). Gdy nazwa typu parametru o wartości tabeli jest określona za pośrednictwem obiektu SQLSetDescField, można go określić przy użyciu literału zgodnego ze sposobem kompilowania aplikacji. Menedżer sterowników ODBC wykona dowolną wymaganą konwersję Unicode. |
SQL_CA_SS_TYPE_CATALOG_NAME (tylko do odczytu) | Adres IPD | SQLTCHAR* | Wykaz, w którym zdefiniowano typ. |
SQL_CA_SS_TYPE_SCHEMA_NAME | Adres IPD | SQLTCHAR* | Schemat, w którym zdefiniowano typ. |
Aplikacje nie mogą ustawiać SQL_CA_SS_TYPE_CATALOG_NAME dla parametrów wartości tabeli. Spowoduje to zwrócenie SQL_ERROR i zarejestrowanie rekordu diagnostycznego za pomocą parametru SQLSTATE = HY091 i komunikatu "Nieprawidłowy identyfikator pola deskryptora".
Następujące atrybuty instrukcji i pola nagłówka deskryptora mają zastosowanie do parametrów wartości tabeli, gdy fokus parametru jest ustawiony na parametr z wartością tabeli:
Nazwa | Lokalizacja | Typ | Opis |
---|---|---|---|
SQL_ATTR_PARAMSET_SIZE (Jest to równoważne SQL_DESC_ARRAY_SIZE w usłudze APD). |
APD | SQLUINTEGER | Rozmiar tablicy dla parametru o wartości tabeli. Jest to maksymalna liczba wierszy, które będą pomieścić lub rozmiar w wierszach; wartość parametru wartości tabeli może zawierać więcej lub mniej wierszy niż mogą być przechowywane. Wartość domyślna to 1. Uwaga: jeśli SQL_SOPT_SS_PARAM_FOCUS jest ustawiona na wartość domyślną 0, SQL_ATTR_PARAMSET_SIZE odnosi się do instrukcji i określa liczbę zestawów parametrów. Jeśli SQL_SOPT_SS_PARAM_FOCUS jest ustawiona na liczbę porządkową parametru wartości tabeli, odwołuje się do parametru wartości tabeli i określa liczbę wierszy na parametr ustawiony dla parametru wartości tabeli. |
SQL_ATTR_PARAM _BIND_TYPE | APD | SQLINTEGER | Wartość domyślna to SQL_PARAM_BIND_BY_COLUMN. Aby wybrać powiązanie mądre wierszy, to pole jest ustawione na długość struktury lub wystąpienia buforu, który będzie powiązany z zestawem wierszy parametrów wartości tabeli. Ta długość musi zawierać miejsce dla wszystkich powiązanych kolumn i dowolnego wypełnienia struktury lub buforu. Dzięki temu, gdy adres powiązanej kolumny jest zwiększany o określoną długość, wynik będzie wskazywać początek tej samej kolumny w następnym wierszu. W przypadku korzystania z operatora w usłudze ANSI C to zachowanie jest gwarantowane. |
SQL_ATTR_PARAM_BIND_OFFSET_PTR | APD | SQLINTEGER* | Wartość domyślna to wskaźnik o wartości null. Jeśli to pole jest inne niż null, sterownik wyłusza wskaźnik, dodaje wartość wyłuszczaną do każdego z odroczonych pól w rekordzie deskryptora (SQL_DESC_DATA_PTR, SQL_DESC_INDICATOR_PTR i SQL_DESC_OCTET_LENGTH_PTR) i używa nowych wartości wskaźnika w celu uzyskania dostępu do wartości danych. |
Te pola są prawidłowe tylko z parametrami wartości tabeli i są ignorowane dla innych typów danych.
SQL_CA_SS_TYPE_NAME jest opcjonalne w przypadku wywołań procedur składowanej. Należy określić dla instrukcji SQL, które nie są wywołaniami procedur, aby umożliwić serwerowi określenie typu parametru wartości tabeli.
Jeśli nazwa typu jest wymagana, a typ tabeli dla parametru wartości tabeli jest zdefiniowany w innym schemacie niż procedura składowana, SQL_CA_SS_TYPE_SCHEMA_NAME należy określić w deskryptorze parametru implementacji (IPD). Jeśli nie, serwer nie będzie mógł określić typu parametru wartości tabeli. Spowoduje to błąd podczas wywoływania elementu SQLExecute lub SQLExecDirect. Błąd będzie miał wartość SQLSTATE= 07006 i komunikat "Naruszenie atrybutu typu danych z ograniczeniami".
Kolumny parametrów o wartości tabeli mogą używać powiązania mądrego wiersza lub kolumnowego. Wartość domyślna to powiązanie oparte na kolumnie. Powiązanie mądry wierszy można określić, ustawiając SQL_ATTR_PARAM_BIND_TYPE i SQL_ATTR_ PARAM_BIND_OFFSET_PTR. Jest to analogiczne do powiązania wierszy kolumn i parametrów.
SQL_CA_SS_TYPE_CATALOG_NAME i SQL_CA_SS_TYPE_SCHEMA_NAME mogą również służyć do pobierania katalogu i schematu skojarzonego z parametrami typu zdefiniowanego przez użytkownika clR. Są to alternatywy dla istniejących atrybutów schematu wykazu określonego typu dla tych typów.
Zobacz też
parametrów