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.
Bizonyos DBMS-ekkel egy alkalmazás név alapján adja meg a tárolt eljárás paramétereit, nem pedig az eljáráshívásban elfoglalt pozíció alapján. Az ilyen paraméterek nevesített paraméterek. Az ODBC támogatja az elnevezett paraméterek használatát. Az ODBC-ben az elnevezett paraméterek csak a tárolt eljárások hívásaiban használatosak, és más SQL-utasításokban nem használhatók.
Az illesztőprogram az IPD SQL_DESC_UNNAMED mezőjének értékét ellenőrzi annak megállapításához, hogy a rendszer nevesített paramétereket használ-e. Ha SQL_DESC_UNNAMED nincs beállítva SQL_UNNAMED, az illesztő az IPD SQL_DESC_NAME mezőjében szereplő nevet használja a paraméter azonosításához. A paraméter kötéséhez az alkalmazás meghívhatja az SQLBindParametert a paraméteradatok megadásához, majd meghívhatja az SQLSetDescFieldet az IPD SQL_DESC_NAME mezőjének beállításához. Névvel ellátott paraméterek használata esetén a paraméter sorrendje az eljáráshívásban nem fontos, és a paraméter rekordszáma figyelmen kívül lesz hagyva.
A névtelen paraméterek és az elnevezett paraméterek közötti különbség a leíró rekordszáma és az eljárás paraméterszáma közötti kapcsolatban van. Névtelen paraméterek használata esetén az első paraméterjelölő a paraméterleíró első rekordja, amely viszont az eljáráshívás első paraméteréhez (létrehozási sorrendben) kapcsolódik. Névvel ellátott paraméterek használata esetén az első paraméterjelölő továbbra is a paraméterleíró első rekordjára vonatkozik, de a leíró rekordszáma és az eljárásban szereplő paraméterszám közötti kapcsolat már nem létezik. Az elnevezett paraméterek nem használják a leíró rekord számának az eljárásparaméter pozíciójára való leképezését; ehelyett a leíró rekord neve az eljárásparaméter nevére van leképezve.
Megjegyzés:
Ha az IPD automatikus sokasága engedélyezve van, az illesztőprogram feltölti a leírót úgy, hogy a leíró rekordok sorrendje megegyezik az eljárásdefiníció paramétereinek sorrendjével, még akkor is, ha nevesített paramétereket használnak.
Ha egy paraméter el van nevezve, akkor az összes paraméternek névvel ellátottnak kell lennie. Ha bármelyik paraméter nem névvel ellátott, akkor egyikük sem lehet névvel ellátott. Ha az elnevezett paraméterek és a névtelen paraméterek keveréke lenne, a viselkedés illesztőprogram-függő lenne.
Az elnevezett paraméterek példájaként tegyük fel, hogy egy SQL Server által tárolt eljárás a következőképpen lett definiálva:
CREATE PROCEDURE test @title_id int = 1, @quote char(30) AS <blah>
Ebben az eljárásban az első paraméter @title_idalapértelmezett értéke 1. Az alkalmazások a következő kóddal hívhatják meg ezt az eljárást, így csak egy dinamikus paramétert határoznak meg. Ez a paraméter egy "@quote" nevű elnevezett paraméter.
// Prepare the procedure invocation statement.
SQLPrepare(hstmt, "{call test(?)}", SQL_NTS);
// Populate record 1 of ipd.
SQLBindParameter(hstmt, 1, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_CHAR,
30, 0, szQuote, 0, &cbValue);
// Get ipd handle and set the SQL_DESC_NAMED and SQL_DESC_UNNAMED fields
// for record #1.
SQLGetStmtAttr(hstmt, SQL_ATTR_IMP_PARAM_DESC, &hIpd, 0, 0);
SQLSetDescField(hIpd, 1, SQL_DESC_NAME, "@quote", SQL_NTS);
// Assuming that szQuote has been appropriately initialized,
// execute.
SQLExecute(hstmt);