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.
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.
Gerelateerde functies
| 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 |