Dela via


Table-Valued parameterbeskrivningsfält

gäller för:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

Stöd för tabellvärdesparametrar innehåller nya SQL Server-specifika fält i ODBC-programparameterbeskrivningar (APD: er) och implementeringsparameterbeskrivningar (IPD).

Anmärkningar

Namn Plats Typ Beskrivning
SQL_CA_SS_TYPE_NAME IPD SQLTCHAR* Servertypens namn på parametern table-valued.

När ett tabellvärdesparametertypnamn anges vid ett anrop till SQLBindParameter måste det alltid anges som ett Unicode-värde, även i program som skapas som ANSI-program. Värdet som används för parametern StrLen_or_IndPtr ska vara antingen SQL_NTS eller stränglängden för namnet multiplicerat med sizeof(WCHAR).

När ett tabellvärdesparametertypnamn anges via SQLSetDescField kan det anges med hjälp av en literal som överensstämmer med hur programmet skapas. ODBC Driver Manager utför alla nödvändiga Unicode-konverteringar.
SQL_CA_SS_TYPE_CATALOG_NAME (skrivskyddad) IPD SQLTCHAR* Katalogen där typen har definierats.
SQL_CA_SS_TYPE_SCHEMA_NAME IPD SQLTCHAR* Schemat där typen har definierats.

Program får inte ange SQL_CA_SS_TYPE_CATALOG_NAME för tabellvärdesparametrar. Om du gör det returneras en SQL_ERROR och en diagnostikpost loggas med SQLSTATE = HY091 och meddelandet "Ogiltig deskriptorfältidentifierare".

Följande instruktionsattribut och deskriptorhuvudfält gäller för tabellvärdesparametrar när parameterfokus är inställt på en tabellvärdeparameter:

Namn Plats Typ Beskrivning
SQL_ATTR_PARAMSET_SIZE

(Detta motsvarar SQL_DESC_ARRAY_SIZE i APD.)
APD SQLUINTEGER Matrisstorleken för buffertmatriserna för en tabellvärdesparameter. Det här är det maximala antalet rader som buffertarna ska rymma eller storleken på buffertarna i rader. själva parametervärdet för tabellvärde kan ha fler eller färre rader än vad buffertarna kan innehålla. Standardvärdet är 1.

Obs! Om SQL_SOPT_SS_PARAM_FOCUS är inställt på standardvärdet 0 refererar SQL_ATTR_PARAMSET_SIZE till -instruktionen och anger antalet parameteruppsättningar. Om SQL_SOPT_SS_PARAM_FOCUS anges till ordningstalet för en tabellvärdeparameter refererar den till parametern table-valued och anger antalet rader per parameter som angetts för parametern table-valued.
SQL_ATTR_PARAM _BIND_TYPE APD SQLINTEGER Standardvärdet är SQL_PARAM_BIND_BY_COLUMN.

Om du vill välja radvis bindning anges det här fältet till längden på strukturen eller en instans av en buffert som ska bindas till en uppsättning tabellvärdesparameterrader. Den här längden måste innehålla utrymme för alla bundna kolumner och eventuell utfyllnad av strukturen eller bufferten. Detta säkerställer att när adressen för en bunden kolumn ökas med den angivna längden pekar resultatet på början av samma kolumn i nästa rad. När du använder storleken på operatorn i ANSI C garanteras detta beteende.
SQL_ATTR_PARAM_BIND_OFFSET_PTR APD SQLINTEGER* Standardvärdet är en null-pekare.

Om det här fältet inte är null avrefererar drivrutinen pekaren, lägger till det avrefererade värdet i vart och ett av de uppskjutna fälten i beskrivningsposten (SQL_DESC_DATA_PTR, SQL_DESC_INDICATOR_PTR och SQL_DESC_OCTET_LENGTH_PTR) och använder de nya pekarvärdena för att komma åt datavärden.

De här fälten är endast giltiga med tabellvärdesparametrar och ignoreras för andra datatyper.

SQL_CA_SS_TYPE_NAME är valfritt för lagrade proceduranrop. Det måste anges för SQL-instruktioner som inte är proceduranrop för att servern ska kunna fastställa typen av parameter för tabellvärde.

Om typnamnet krävs och tabelltypen för parametern table-valued definieras i ett annat schema än den lagrade proceduren måste SQL_CA_SS_TYPE_SCHEMA_NAME anges i parameterbeskrivningen för implementering (IPD). Annars kommer servern inte att kunna fastställa typen av tabellvärdesparameter. Detta resulterar i ett fel när du anropar SQLExecute eller SQLExecDirect. Felet kommer att ha SQLSTATE= 07006 och meddelandet "Överträdelse av attribut för begränsad datatyp".

Tabellvärdeparameterkolumner kan använda antingen radvis eller kolumnvis bindning. Standardvärdet är kolumnvis bindning. Radvis bindning kan anges genom att ange SQL_ATTR_PARAM_BIND_TYPE och SQL_ATTR_ PARAM_BIND_OFFSET_PTR. Detta motsvarar radvis bindning av kolumner och parametrar.

SQL_CA_SS_TYPE_CATALOG_NAME och SQL_CA_SS_TYPE_SCHEMA_NAME kan också användas för att hämta katalogen och schemat som är associerade med CLR-användardefinierade typparametrar. Det här är alternativ till de befintliga typspecifika katalogschemaattributen för dessa typer.

Se även

Table-Valued parametrar (ODBC)