Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
Az eljáráshívások paraméterei lehetnek bemeneti, bemeneti/kimeneti vagy kimeneti paraméterek. Ez eltér az összes többi SQL-utasítás paramétereitől, amelyek mindig bemeneti paraméterek.
A bemeneti paraméterekkel értékeket küldhet az eljárásnak. Tegyük fel például, hogy a Parts tábla PartID, Description és Price oszlopokkal rendelkezik. Az InsertPart eljárásnak lehet egy bemeneti paramétere a tábla minden oszlopához. Például:
{call InsertPart(?, ?, ?)}
Az illesztőprogramok csak akkor módosíthatják a bemeneti puffer tartalmát, ha az SQLExecDirect vagy az SQLExecute SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_ERROR, SQL_INVALID_HANDLE vagy SQL_NO_DATA ad vissza. A bemeneti puffer tartalmát nem szabad módosítani, amíg az SQLExecDirect vagy az SQLExecute SQL_NEED_DATA vagy SQL_STILL_EXECUTING ad vissza.
A bemeneti/kimeneti paraméterekkel értékek küldhetők az eljárásoknak, és lekérhetők az eljárásokból. Ha ugyanazt a paramétert használja, mint egy bemenet és egy kimeneti paraméter, általában zavaró, ezért kerülni kell. Tegyük fel például, hogy egy eljárás elfogad egy rendelésazonosítót, és visszaadja az ügyfél azonosítóját. Ez egyetlen bemeneti/kimeneti paraméterrel határozható meg:
{call GetCustID(?)}
Érdemes lehet két paramétert használni: a rendelésazonosító bemeneti paraméterét, valamint egy kimeneti vagy bemeneti/kimeneti paramétert az ügyfélazonosítóhoz:
{call GetCustID(?, ?)}
A kimeneti paraméterek az eljárás visszatérési értékének lekérésére és az eljárásargumentumok értékeinek lekérésére szolgálnak; az értékeket visszaadó eljárásokat függvénynek is nevezik. Tegyük fel például, hogy az imént említett GetCustID eljárás egy értéket ad vissza, amely jelzi, hogy megtalálta-e a rendelést. A következő hívásban az első paraméter az eljárás visszatérési értékének lekéréséhez használt kimeneti paraméter, a második paraméter a rendelésazonosító megadásához használt bemeneti paraméter, a harmadik pedig az ügyfél-azonosító lekéréséhez használt kimeneti paraméter:
{? = call GetCustID(?, ?)}
Az illesztőprogramok nem másként kezelik a bemeneti és bemeneti/kimeneti paraméterek értékeit az eljárásokban, mint más SQL-utasítások bemeneti paraméterei. Az utasítás végrehajtásakor lekérik az ezekhez a paraméterekhez kötött változók értékeit, és elküldik őket az adatforrásnak.
Az utasítás végrehajtása után az illesztőprogramok az adott paraméterekhez kötött változókban tárolják a bemeneti/kimeneti és kimeneti paraméterek visszaadott értékeit. Ezek a visszaadott értékek csak az eljárás által visszaadott összes eredmény lekérése és az SQLMoreResults SQL_NO_DATA visszaadása után állíthatók be. Ha az utasítás végrehajtása hibát eredményez, a bemeneti/kimeneti paraméter pufferének vagy a kimeneti paraméter pufferének tartalma nincs meghatározva.
Egy alkalmazás meghívja az SQLProcedure-t annak megállapítására, hogy egy eljárásnak van-e visszatérési értéke. Meghívja az SQLProcedureColumns-t az egyes eljárásparaméterek típusának (visszatérési érték, bemenet, bemenet/kimenet vagy kimenet) meghatározásához.