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.
Een procedure is een uitvoerbaar object dat is opgeslagen op de gegevensbron. Over het algemeen zijn het een of meer SQL-instructies die vooraf zijn gecompileerd. De escapereeks voor het aanroepen van een procedure is
{[?=]aanroepenprocedure-naam[([parameter][,[parameter]]...)]}
waarbij procedurenaam de naam van een procedure specificeert en parameter een procedureparameter specificeert.
Zie Procedureoproep-escape-reeks in bijlage C: SQL Grammar voor meer informatie over de escape-reeks voor procedureoproep.
Een procedure kan nul of meer parameters hebben. Het kan ook een waarde retourneren, zoals aangegeven door de optionele parametermarkering ?= aan het begin van de syntaxis. Als de parameter een invoer- of invoer-/uitvoerparameter is, kan dit een letterlijke parameter of parametermarkering zijn. Interoperabele toepassingen moeten echter altijd parametermarkeringen gebruiken omdat sommige gegevensbronnen geen letterlijke parameterwaarden accepteren. Als de parameter een uitvoerparameter is, moet deze een parametermarkering zijn. Parametermarkeringen moeten worden gebonden aan SQLBindParameter voordat de instructie procedureoproep wordt uitgevoerd.
Invoer- en invoer-/uitvoerparameters kunnen worden weggelaten uit procedure-aanroepen. Als een procedure wordt aangeroepen met haakjes, maar zonder parameters, zoals { call procedure-name()}, geeft het stuurprogramma de gegevensbron de opdracht om de standaardwaarde voor de eerste parameter te gebruiken. Als de procedure geen parameters heeft, kan dit ertoe leiden dat de procedure mislukt. Als een procedure zonder haakjes wordt aangeroepen, zoals { call procedure-name}, verzendt het stuurprogramma geen parameterwaarden.
Letterlijke waarden kunnen worden opgegeven voor invoer- en invoer-/uitvoerparameters in procedure-aanroepen. Stel dat de procedure InsertOrder vijf invoerparameters heeft. Met de volgende aanroep van InsertOrder wordt de eerste parameter weggelaten, wordt een letterlijke waarde voor de tweede parameter gegeven en wordt een parametermarkering gebruikt voor de derde, vierde en vijfde parameters:
{call InsertOrder(, 10, ?, ?, ?)} // Not interoperable!
Als een parameter wordt weggelaten, moet de komma die de parameter van andere parameters scheidt nog steeds worden opgenomen. Als een invoer- of invoer-/uitvoerparameter wordt weggelaten, gebruikt de procedure de standaardwaarde van de parameter. Een andere manier om de standaardwaarde van een invoer- of invoer-/uitvoerparameter op te geven, is door de waarde van de lengte/indicatorbuffer die is gebonden aan de parameter in te stellen op SQL_DEFAULT_PARAM.
Als een invoer-/uitvoerparameter wordt weggelaten of als er een letterlijke waarde voor de parameter wordt opgegeven, wordt de uitvoerwaarde door het stuurprogramma verwijderd. Als de parametermarkering voor de retourwaarde van een procedure wordt weggelaten, wordt de retourwaarde door het stuurprogramma genegeerd. Als een toepassing ten slotte een retourwaardeparameter opgeeft voor een procedure die geen waarde retourneert, stelt het stuurprogramma de waarde in van de lengte/indicatorbuffer die is gebonden aan de parameter op SQL_NULL_DATA.
Stel dat de procedure PARTS_IN_ORDERS een resultatenset maakt die een lijst met orders bevat die een bepaald onderdeelnummer bevatten. De volgende code roept deze procedure aan voor onderdeelnummer 544:
SQLUINTEGER PartID;
SQLINTEGER PartIDInd = 0;
// Bind the parameter.
SQLBindParameter(hstmt, 1, SQL_PARAM_INPUT, SQL_C_SLONG, SQL_INTEGER, 0, 0,
&PartID, 0, PartIDInd);
// Place the department number in PartID.
PartID = 544;
// Execute the statement.
SQLExecDirect(hstmt, "{call PARTS_IN_ORDERS(?)}", SQL_NTS);
Om te bepalen of een gegevensbron procedures ondersteunt, roept een toepassing SQLGetInfo aan met de optie SQL_PROCEDURES.
Zie Procedures voor meer informatie over procedures.