SQLProcedures-functie

Conformiteit
Versie geïntroduceerd: ODBC 1.0 Standaardnaleving: ODBC

Samenvatting
SQLProcedures geeft de lijst met procedurenamen terug die zijn opgeslagen in een specifieke databron. Procedure is een generieke term die wordt gebruikt om een uitvoerbaar object of een benoemde entiteit te beschrijven die kan worden aangeroepen met invoer- en uitvoerparameters. Voor meer informatie over procedures, zie de Procedures.

Syntax

  
SQLRETURN SQLProcedures(  
     SQLHSTMT       StatementHandle,  
     SQLCHAR *      CatalogName,  
     SQLSMALLINT    NameLength1,  
     SQLCHAR *      SchemaName,  
     SQLSMALLINT    NameLength2,  
     SQLCHAR *      ProcName,  
     SQLSMALLINT    NameLength3);  

Arguments

StatementHandle
[Invoer] Instructiehandgreep.

CatalogName
[Invoer] Procedurecatalogus. Als een driver catalogi ondersteunt voor sommige tabellen maar niet voor andere, bijvoorbeeld wanneer de driver gegevens ophaalt uit verschillende DBMS'en, duidt een lege string ("") die tabellen aan die geen catalogi hebben. CatalogName kan geen zoekpatroon voor strings bevatten.

Als het SQL_ATTR_METADATA_ID-statementattribuut is ingesteld op SQL_TRUE, wordt CatalogName behandeld als een identificatie en is het geval niet significant. Als het SQL_FALSE is, is CatalogName een gewoon argument; Het wordt letterlijk behandeld en het geval is belangrijk. Zie Argumenten in Catalogusfuncties voor meer informatie.

NameLength1
[Invoer] Lengte in tekens van *CatalogName.

Schemanaam
[Invoer] Stringzoekpatroon voor procedureschemanamen. Als een driver schema's ondersteunt voor sommige procedures maar niet voor andere, zoals wanneer de driver gegevens ophaalt uit verschillende DBMS'en, duidt een lege string ("") die procedures aan die geen schema's hebben.

Als het SQL_ATTR_METADATA_ID-statement-attribuut is ingesteld op SQL_TRUE, wordt SchemaName behandeld als een identifier en is het geval niet significant. Als het SQL_FALSE is, is SchemaName een patroonwaarde-argument; Het wordt letterlijk behandeld en het geval is belangrijk.

NameLength2
[Invoer] Lengte in tekens van *SchemaName.

ProcName
[Invoer] Stringzoekpatroon voor procedurenamen.

Als het SQL_ATTR_METADATA_ID-statementattribuut is ingesteld op SQL_TRUE, wordt ProcName behandeld als een identificatie en is het geval niet significant. Als het SQL_FALSE is, is ProcName een patroonwaarde-argument; Het wordt letterlijk behandeld en het geval is belangrijk.

NameLength3
[Invoer] Lengte in tekens van *ProcName.

Returns

SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_STILL_EXECUTING, SQL_ERROR of SQL_INVALID_HANDLE.

Diagnostics

Wanneer SQLProcedures SQL_ERROR of SQL_SUCCESS_WITH_INFO teruggeeft, kan een bijbehorende SQLSTATE-waarde worden verkregen door SQLGetDiagRec aan te roepen met een HandleType van SQL_HANDLE_STMT en een Handle van StatementHandle. De volgende tabel geeft een overzicht van de SQLSTATE-waarden die vaak door SQLProcedures worden geretourneerd en legt elk uit in de context van deze functie; de notatie "(DM)" gaat vooraf aan de beschrijvingen van SQLSTATES die door de Driver Manager worden teruggegeven. De retourcode die is gekoppeld aan elke SQLSTATE-waarde is SQL_ERROR, tenzij anders vermeld.

SQLSTATE Fout Description
01000 Algemene waarschuwing Stuurprogrammaspecifiek informatiebericht. (Functie retourneert SQL_SUCCESS_WITH_INFO.)
08S01 Communicatiekoppelingsfout De communicatiekoppeling tussen het stuurprogramma en de gegevensbron waarmee het stuurprogramma is verbonden, is mislukt voordat de verwerking van de functie is voltooid.
24000 Ongeldige cursorstatus Er stond een cursor open op de StatementHandle, en SQLFetch of SQLFetchScroll was aangeroepen. Deze fout wordt geretourneerd door Driver Manager als SQLFetch of SQLFetchScroll geen SQL_NO_DATA heeft geretourneerd en wordt geretourneerd door het stuurprogramma als SQLFetch of SQLFetchScroll SQL_NO_DATA heeft geretourneerd.

Er stond een cursor open op de StatementHandle, maar SQLFetch of SQLFetchScroll waren nog niet aangeroepen.
40001 Serialisatiefout De transactie is teruggedraaid vanwege een resource-impasse met een andere transactie.
40003 Voltooiing van instructie onbekend De gekoppelde verbinding is mislukt tijdens de uitvoering van deze functie en de status van de transactie kan niet worden bepaald.
HY000 Algemene fout Er is een fout opgetreden waarvoor er geen specifieke SQLSTATE is en waarvoor geen implementatiespecifieke SQLSTATE is gedefinieerd. Het foutbericht dat door SQLGetDiagRec in de *MessageText-buffer wordt geretourneerd, beschrijft de fout en de oorzaak ervan.
HY001 Fout bij geheugentoewijzing Het stuurprogramma kan geen geheugen toewijzen dat nodig is om de uitvoering of voltooiing van de functie te ondersteunen.
HY008 Bewerking geannuleerd Asynchrone verwerking is ingeschakeld voor de StatementHandle. De functie is aangeroepen en voordat de uitvoering is voltooid, werd SQLCancel of SQLCancelHandle aangeroepen op de StatementHandle. Vervolgens werd de functie opnieuw aangeroepen op de StatementHandle.

De functie is aangeroepen en voordat de uitvoering is voltooid, werd SQLCancel of SQLCancelHandle aangeroepen op de StatementHandle vanuit een andere thread in een multithread-toepassing.
HY009 Ongeldig gebruik van null-aanwijzer Het SQL_ATTR_METADATA_ID-statement-attribuut was ingesteld op SQL_TRUE, het CatalogName-argument was een nullpointer, en de SQL_CATALOG_NAME InfoType geeft aan dat catalogusnamen worden ondersteund.

(DM) Het SQL_ATTR_METADATA_ID-statementattribuut werd ingesteld op SQL_TRUE, en het SchemaName- of ProcName-argument was een nullpointer.
HY010 Fout in functiereeks (DM) Er is een asynchroon uitgevoerde functie aangeroepen voor de verbindingsgreep die is gekoppeld aan de StatementHandle. Deze asynchrone functie werd nog uitgevoerd toen deze functie werd aangeroepen.

(DM) SQLExecute, SQLExecDirect of SQLMoreResults werd aangeroepen voor de StatementHandle en geretourneerd SQL_PARAM_DATA_AVAILABLE. Deze functie is aangeroepen voordat gegevens zijn opgehaald voor alle gestreamde parameters.

(DM) Er is een asynchroon uitgevoerde functie (niet deze) aangeroepen voor de StatementHandle en werd nog steeds uitgevoerd toen deze functie werd aangeroepen.

(DM) SQLExecute, SQLExecDirect, SQLBulkOperations of SQLSetPos werd aangeroepen voor de StatementHandle en geretourneerd SQL_NEED_DATA. Deze functie is aangeroepen voordat gegevens werden verzonden voor alle parameters of kolommen voor uitvoering van gegevens.
HY013 Fout bij geheugenbeheer De functie-aanroep kan niet worden verwerkt omdat de onderliggende geheugenobjecten niet kunnen worden geopend, mogelijk vanwege weinig geheugen.
HY090 Ongeldige tekenreeks- of bufferlengte (DM) De waarde van een van de naamlengteargumenten was minder dan 0, maar niet gelijk aan SQL_NTS.

De waarde van een van de argumenten voor de lengte van de naam heeft de maximumlengtewaarde voor de bijbehorende naam overschreden.
HY117 De verbinding is onderbroken vanwege een onbekende transactiestatus. Alleen de verbinding verbreken en alleen-lezenfuncties zijn toegestaan. (DM) Zie SQLEndTran Function voor meer informatie over de onderbroken status.
HYC00 Optionele functie niet geïmplementeerd Er werd een procedurecatalogus gespecificeerd, en de driver of databron ondersteunt geen catalogi.

Er werd een procedureschema gespecificeerd, en de driver of databron ondersteunt geen schema's.

Er werd een stringzoekpatroon gespecificeerd voor het procedureschema of de procedurenaam, en de databron ondersteunt geen zoekpatronen voor een of meer van die argumenten.

De combinatie van de huidige instellingen van de SQL_ATTR_CONCURRENCY- en SQL_ATTR_CURSOR_TYPE instructiekenmerken wordt niet ondersteund door het stuurprogramma of de gegevensbron.

Het kenmerk SQL_ATTR_USE_BOOKMARKS instructie is ingesteld op SQL_UB_VARIABLE en het kenmerk SQL_ATTR_CURSOR_TYPE instructie is ingesteld op een cursortype waarvoor het stuurprogramma geen bladwijzers ondersteunt.
HYT00 Time-out verlopen De time-outperiode van de query is verlopen voordat de gegevensbron de aangevraagde resultatenset heeft geretourneerd. De time-outperiode wordt ingesteld via SQLSetStmtAttr, SQL_ATTR_QUERY_TIMEOUT.
HYT01 Time-out voor de verbinding is overschreden De time-outperiode voor de verbinding is verlopen voordat de gegevensbron op de aanvraag heeft gereageerd. De time-outperiode voor de verbinding wordt ingesteld via SQLSetConnectAttr, SQL_ATTR_CONNECTION_TIMEOUT.
IM001 Stuurprogramma biedt geen ondersteuning voor deze functie (DM) De driver die aan de StatementHandle is gekoppeld, ondersteunt deze functie niet.
IM017 Polling is uitgeschakeld in de asynchrone meldingsmodus Wanneer het meldingsmodel wordt gebruikt, wordt polling uitgeschakeld.
IM018 SQLCompleteAsync is niet aangeroepen om de vorige asynchrone bewerking op deze ingang te voltooien. Als de vorige functieaanroep op de ingang SQL_STILL_EXECUTING retourneert en als de meldingsmodus is ingeschakeld, moet SQLCompleteAsync worden aangeroepen op de ingang om naverwerking te kunnen uitvoeren en de bewerking te voltooien.

Comments

SQLProcedures vermeldt alle procedures in het gevraagde bereik. Een gebruiker kan wel of niet toestemming hebben om een van deze procedures uit te voeren. Om de toegankelijkheid te controleren, kan een applicatie SQLGetInfo aanroepen en de waarde van de SQL_ACCESSIBLE_PROCEDURES informatie controleren. Anders moet de applicatie in staat zijn om een situatie aan te kunnen waarin de gebruiker een procedure selecteert die hij niet kan uitvoeren. Voor informatie over hoe deze informatie gebruikt kan worden, zie Procedures.

Opmerking

Zie Catalogusfuncties voor meer informatie over het algemene gebruik, argumenten en geretourneerde gegevens van ODBC-catalogusfuncties.

SQLProcedures geeft de resultaten terug als een standaard resultaatset, geordend op PROCEDURE_CAT, PROCEDURE_SCHEMA en PROCEDURE_NAME.

Opmerking

SQLProcedures geven mogelijk niet alle procedures terug. Applicaties kunnen elke geldige procedure gebruiken, ongeacht of deze wordt teruggegeven door SQLProcedures.

De volgende kolommen zijn hernoemd naar ODBC 3*.x*. De wijzigingen in kolomnamen beïnvloeden de achterwaartse compatibiliteit niet, omdat applicaties binden op kolomnummer.

ODBC 2.0-kolom ODBC 3*.x* kolom
PROCESKWALIFICATIE PROCEDURE_CAT
PROCEDURE _OWNER PROCEDURE _SCHEM

Om de werkelijke lengtes van de kolommen PROCEDURE_CAT, PROCEDURE_SCHEM en PROCEDURE_NAME te bepalen, kan een applicatie SQLGetInfo aanroepen met de opties SQL_MAX_CATALOG_NAME_LEN, SQL_MAX_SCHEMA_NAME_LEN en SQL_MAX_PROCEDURE_NAME_LEN.

De volgende tabel bevat de kolommen in de resultatenset. Extra kolommen voorbij kolom 8 (PROCEDURE_TYPE) kunnen door de driver worden gedefinieerd. Een applicatie zou toegang moeten krijgen tot driver-specifieke kolommen door af te tellen vanaf het einde van de resultaatset in plaats van een expliciete ordinaalpositie te specificeren. Zie Gegevens geretourneerd door Catalogusfuncties voor meer informatie.

Kolomnaam Kolomnummer Gegevenstype Comments
PROCEDURE_CAT (ODBC 2.0) 1 Varchar Procedurecatalogusidentificatie; NULL als het niet van toepassing is op de databron. Als een driver catalogi ondersteunt voor sommige procedures maar niet voor andere, bijvoorbeeld wanneer de driver gegevens ophaalt uit verschillende DBMS'en, geeft hij een lege string ("") terug voor die procedures die geen catalogi hebben.
PROCEDURE_SCHEM (ODBC 2.0) 2 Varchar Procedureschema-identificatie; NULL als het niet van toepassing is op de databron. Als een driver schema's ondersteunt voor sommige procedures maar niet voor andere, bijvoorbeeld wanneer de driver gegevens ophaalt uit verschillende DBMS'en, geeft hij een lege string ("") terug voor die procedures die geen schema's hebben.
PROCEDURE_NAME (ODBC 2.0) 3 Varchar niet NULL Procedure-identificatie.
NUM_INPUT_PARAMS (ODBC 2.0) 4 N/A Gereserveerd voor toekomstig gebruik. Applicaties mogen niet vertrouwen op de gegevens die in deze resultaatkolommen worden teruggegeven.
NUM_OUTPUT_PARAMS (ODBC 2.0) 5 N/A Gereserveerd voor toekomstig gebruik. Applicaties mogen niet vertrouwen op de gegevens die in deze resultaatkolommen worden teruggegeven.
NUM_RESULT_SETS (ODBC 2.0) 6 N/A Gereserveerd voor toekomstig gebruik. Applicaties mogen niet vertrouwen op de gegevens die in deze resultaatkolommen worden teruggegeven.
OPMERKINGEN (ODBC 2.0) 7 Varchar Een beschrijving van de procedure.
PROCEDURE_TYPE (ODBC 2.0) 8 Smallint Definieert het proceduretype:

SQL_PT_UNKNOWN: Het kan niet worden vastgesteld of de procedure een waarde teruggeeft.

SQL_PT_PROCEDURE: Het teruggegeven object is een procedure; dat wil zeggen, het heeft geen retourwaarde.

SQL_PT_FUNCTION: Het teruggegeven object is een functie; dat wil zeggen, het heeft een rendementswaarde.

De SchemaName- en ProcName-argumenten accepteren zoekpatronen. Voor meer informatie over geldige zoekpatronen, zie Patroonwaardeargumenten.

Codevoorbeeld

Zie Procedure-oproepen.

Voor informatie over Zien!
Een buffer koppelen aan een kolom in een resultatenset SQLBindCol, functie
Verwerking van instructie annuleren SQLCancel, functie
Het ophalen van een enkele rij of een datablok in een vooruit-only richting SQLFetch, functie
Een gegevensblok ophalen of door een resultatenset schuiven SQLFetchScroll, functie
Informatie teruggeven over een driver of databron SQLGetInfo-functie
Het teruggeven van de parameters en de kolommen van de resultaatset van een procedure SQLProcedureColumns-functie
Syntaxis voor het aanroepen van opgeslagen procedures Verklaringen uitvoeren

Zie ook

ODBC-API-verwijzing
ODBC-headerbestanden