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.
Parameters in procedure-aanroepen kunnen invoer-, invoer-/uitvoer- of uitvoerparameters zijn. Dit verschilt van parameters in alle andere SQL-instructies, die altijd invoerparameters zijn.
Invoerparameters worden gebruikt om waarden naar de procedure te verzenden. Stel dat de tabel Onderdelen de kolommen PartID, Description en Price bevat. De InsertPart-procedure heeft mogelijk een invoerparameter voor elke kolom in de tabel. Voorbeeld:
{call InsertPart(?, ?, ?)}
Een stuurprogramma mag de inhoud van een invoerbuffer pas wijzigen als SQLExecDirect of SQLExecute SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_ERROR, SQL_INVALID_HANDLE of SQL_NO_DATA retourneert. De inhoud van de invoerbuffer mag niet worden gewijzigd terwijl SQLExecDirect of SQLExecute SQL_NEED_DATA of SQL_STILL_EXECUTING retourneert.
Invoer-/uitvoerparameters worden gebruikt om waarden naar procedures te verzenden en waarden op te halen uit procedures. Het gebruik van dezelfde parameter als een invoer- en uitvoerparameter is meestal verwarrend en moet worden vermeden. Stel dat een procedure een order-id accepteert en de id van de klant retourneert. Dit kan worden gedefinieerd met één invoer-/uitvoerparameter:
{call GetCustID(?)}
Het is misschien beter om twee parameters te gebruiken: een invoerparameter voor de order-id en een uitvoer- of invoer-/uitvoerparameter voor de klant-id:
{call GetCustID(?, ?)}
Uitvoerparameters worden gebruikt om de retourwaarde van de procedure op te halen en waarden op te halen uit procedureargumenten; procedures die waarden retourneren, worden ook wel functies genoemd. Stel dat de GetCustID-procedure die zojuist is vermeld, een waarde retourneert die aangeeft of de order kan worden gevonden. In de volgende aanroep is de eerste parameter een uitvoerparameter die wordt gebruikt om de retourwaarde van de procedure op te halen. De tweede parameter is een invoerparameter die wordt gebruikt om de order-id op te geven en de derde parameter is een uitvoerparameter die wordt gebruikt om de klant-id op te halen:
{? = call GetCustID(?, ?)}
Stuurprogramma's verwerken waarden voor invoer- en invoer-/uitvoerparameters in procedures op dezelfde manier als invoerparameters in andere SQL-instructies. Wanneer de instructie wordt uitgevoerd, halen ze de waarden op van de variabelen die aan deze parameters zijn gebonden en verzenden ze naar de gegevensbron.
Nadat de instructie is uitgevoerd, slaan stuurprogramma's de geretourneerde waarden van invoer-/uitvoer- en uitvoerparameters op in de variabelen die aan deze parameters zijn gebonden. Deze geretourneerde waarden worden pas ingesteld nadat alle resultaten die door de procedure zijn geretourneerd, zijn opgehaald en SQLMoreResults SQL_NO_DATA heeft geretourneerd. Als het uitvoeren van de instructie resulteert in een fout, is de inhoud van de invoer-/uitvoerparameterbuffer of uitvoerparameterbuffer niet gedefinieerd.
Een toepassing roept SQLProcedure aan om te bepalen of een procedure een retourwaarde heeft. SqlProcedureColumns wordt aanroepen om het type (retourwaarde, invoer, invoer/uitvoer of uitvoer) van elke procedureparameter te bepalen.