Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
van toepassing op:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
Ondersteuning voor tabelwaardeparameters bevat nieuwe SQL Server-specifieke velden in ODBC-toepassingsparameterdescriptors (APD's) en implementatieparameterdescriptors (IPD's).
Opmerkingen
Naam | Plaats | Type | Beschrijving |
---|---|---|---|
SQL_CA_SS_TYPE_NAME | IPD | SQLTCHAR* | De naam van het servertype van de parameter met tabelwaarde. Wanneer een parametertypenaam met tabelwaarde wordt opgegeven voor een aanroep naar SQLBindParameter, moet deze altijd worden opgegeven als een Unicode-waarde, zelfs in toepassingen die zijn gebouwd als ANSI-toepassingen. De waarde die wordt gebruikt voor de parameter StrLen_or_IndPtr moet SQL_NTS of de tekenreekslengte van de naam vermenigvuldigd met groottevan(WCHAR). Wanneer een parametertypenaam met tabelwaarde wordt opgegeven via SQLSetDescField, kan deze worden opgegeven met behulp van een letterlijke waarde die voldoet aan de manier waarop de toepassing wordt gebouwd. OdBC Driver Manager voert een vereiste Unicode-conversie uit. |
SQL_CA_SS_TYPE_CATALOG_NAME (alleen-lezen) | IPD | SQLTCHAR* | De catalogus waarin het type is gedefinieerd. |
SQL_CA_SS_TYPE_SCHEMA_NAME | IPD | SQLTCHAR* | Het schema waarin het type is gedefinieerd. |
Toepassingen mogen geen SQL_CA_SS_TYPE_CATALOG_NAME instellen voor parameters met tabelwaarden. Als u dit doet, wordt een SQL_ERROR geretourneerd en wordt een diagnostische record vastgelegd met SQLSTATE = HY091 en het bericht 'Ongeldige descriptorveld-id'.
De volgende instructiekenmerken en descriptorheadervelden zijn van toepassing op parameters met tabelwaarde wanneer de parameterfocus is ingesteld op een parameter met tabelwaarde:
Naam | Plaats | Type | Beschrijving |
---|---|---|---|
SQL_ATTR_PARAMSET_SIZE (Dit is gelijk aan SQL_DESC_ARRAY_SIZE in de APD.) |
APD | SQLUINTEGER | De matrixgrootte van de buffermatrices voor een parameter met tabelwaarden. Dit is het maximum aantal rijen dat de buffers kunnen opvangen of de grootte van de buffers in rijen; de parameterwaarde van de tabelwaarde zelf kan meer of minder rijen bevatten dan de buffers kunnen bevatten. De standaardwaarde is 1. Opmerking: als SQL_SOPT_SS_PARAM_FOCUS is ingesteld op de standaardwaarde 0, verwijst SQL_ATTR_PARAMSET_SIZE naar de instructie en geeft u het aantal parametersets op. Als SQL_SOPT_SS_PARAM_FOCUS is ingesteld op het rangnummer van een tabelwaardeparameter, verwijst deze naar de parameter met tabelwaarde en geeft het aantal rijen per parameterset voor de parameter met tabelwaarde op. |
SQL_ATTR_PARAM _BIND_TYPE | APD | SQLINTEGER | De standaardwaarde is SQL_PARAM_BIND_BY_COLUMN. Als u rijgebonden binding wilt selecteren, wordt dit veld ingesteld op de lengte van de structuur of een exemplaar van een buffer die wordt gebonden aan een set tabelwaardeparameterrijen. Deze lengte moet ruimte bevatten voor alle afhankelijke kolommen en eventuele opvulling van de structuur of buffer. Dit zorgt ervoor dat wanneer het adres van een afhankelijke kolom wordt verhoogd met de opgegeven lengte, het resultaat verwijst naar het begin van dezelfde kolom in de volgende rij. Wanneer u de grootte van operator in ANSI C gebruikt, is dit gedrag gegarandeerd. |
SQL_ATTR_PARAM_BIND_OFFSET_PTR | APD | SQLINTEGER* | De standaardwaarde is een null-aanwijzer. Als dit veld niet null is, wordt de aanwijzer door het stuurprogramma gededucteerd, wordt de waarde van de deductie toegevoegd aan elk van de uitgestelde velden in de descriptorrecord (SQL_DESC_DATA_PTR, SQL_DESC_INDICATOR_PTR en SQL_DESC_OCTET_LENGTH_PTR), en worden de nieuwe aanwijzerwaarden gebruikt om toegang te krijgen tot gegevenswaarden. |
Deze velden zijn alleen geldig met parameters met tabelwaarden en worden genegeerd voor andere gegevenstypen.
SQL_CA_SS_TYPE_NAME is optioneel voor opgeslagen procedure-aanroepen. Deze moet worden opgegeven voor SQL-instructies die geen procedureoproepen zijn om de server in staat te stellen het type van de parameter met tabelwaarde te bepalen.
Als de typenaam vereist is en het tabeltype voor de parameter met tabelwaarde is gedefinieerd in een ander schema dan de opgeslagen procedure, moet SQL_CA_SS_TYPE_SCHEMA_NAME worden opgegeven in de implementatieparameterdescriptor (IPD). Zo niet, dan kan de server het type parameter met tabelwaarde niet bepalen. Dit resulteert in een fout wanneer u SQLExecute of SQLExecDirect aanroept. De fout heeft SQLSTATE= 07006 en het bericht 'Schending van het kenmerk beperkt gegevenstype'.
Kolommen met parameters met tabelwaarden kunnen rij- of kolomgebonden binding gebruiken. De standaardwaarde is kolomgebonden binding. Rijgebonden binding kan worden opgegeven door SQL_ATTR_PARAM_BIND_TYPE en SQL_ATTR_ PARAM_BIND_OFFSET_PTR in te stellen. Dit is vergelijkbaar met rijgewijze binding van kolommen en parameters.
SQL_CA_SS_TYPE_CATALOG_NAME en SQL_CA_SS_TYPE_SCHEMA_NAME kunnen ook worden gebruikt voor het ophalen van de catalogus en het schema dat is gekoppeld aan door de gebruiker gedefinieerde CLR-parameters. Dit zijn alternatieven voor de bestaande typespecifieke catalogusschemakenmerken voor deze typen.
Zie ook
ODBC- (