Not
Åtkomst till denna sida kräver auktorisation. Du kan prova att logga in eller byta katalog.
Åtkomst till denna sida kräver auktorisation. Du kan prova att byta katalog.
En parameter är en variabel i en SQL-instruktion. Anta till exempel att en partstabell har kolumner med namnet PartID, Description och Price. Om du vill lägga till en del utan parametrar måste du skapa en SQL-instruktion, till exempel:
INSERT INTO Parts (PartID, Description, Price) VALUES (2100, 'Drive shaft', 50.00)
Även om den här instruktionen infogar en ny ordning är det inte en bra lösning för ett orderinmatningsprogram eftersom värdena som ska infogas inte kan hårdkodas i programmet. Ett alternativ är att konstruera SQL-instruktionen under körning med hjälp av de värden som behöver infogas. Detta är inte heller en bra lösning på grund av komplexiteten i att generera uttalanden under körning. Den bästa lösningen är att ersätta elementen i VALUES-satsen med frågetecken (?) eller parametermarkörer:
INSERT INTO Parts (PartID, Description, Price) VALUES (?, ?, ?)
Parametermarkörerna är sedan bundna till programvariabler. Om du vill lägga till en ny rad behöver programmet bara ange värdena för variablerna och köra -instruktionen. Drivrutinen hämtar sedan variablernas aktuella värden och skickar dem till datakällan. Om satsen körs flera gånger kan programmet göra processen ännu effektivare genom att förbereda satsen.
Instruktionen som visas kan vara hårdkodad i ett orderinmatningsprogram för att infoga en ny rad. Parametermarkörer är dock inte begränsade till vertikala program. För alla applikationer minskar de komplexiteten att konstruera SQL-instruktioner vid körningstid genom att undvika konverteringar till och från text. Det del-ID som visas lagras troligen i programmet som ett heltal. Om SQL-instruktionen konstrueras utan parametermarkörer måste programmet konvertera del-ID:t till text och datakällan måste konvertera tillbaka den till ett heltal. Genom att använda en parametermarkör kan programmet skicka del-ID:t till drivrutinen som ett heltal, vilket vanligtvis kan skicka det till datakällan som ett heltal. Detta sparar två konverteringar. För långa datavärden är detta mycket viktigt eftersom textformerna för sådana värden ofta överskrider den tillåtna längden på en SQL-instruktion.
Parametrar är endast giltiga på vissa platser i SQL-uttryck. De är till exempel inte tillåtna i urvalslistan (listan över kolumner som ska returneras av en SELECT-instruktion ), och de tillåts inte heller som båda operanderna för en binär operator, till exempel likhetstecknet (=), eftersom det skulle vara omöjligt att fastställa parametertypen. I allmänhet är parametrar endast giltiga i DML-instruktioner (Data Manipulation Language) och inte i DDL-instruktioner (Data Definition Language). Mer information finns i Parametermarkörer i bilaga C: SQL-grammatik.
När SQL-instruktionen anropar en procedur kan namngivna parametrar användas. Namngivna parametrar identifieras av deras namn, inte av deras position i SQL-instruktionen. De kan bindas av ett anrop till SQLBindParameter, men parametern identifieras av fältet SQL_DESC_NAME i IPD :n (implementeringsparameterbeskrivningen), inte av parameternumber-argumentetför SQLBindParameter. De kan också bindas genom att anropa SQLSetDescField eller SQLSetDescRec. Mer information om namngivna parametrar finns i Bindningsparametrar efter namn (namngivna parametrar), senare i det här avsnittet. Mer information om deskriptorer finns i Beskrivningar.
Det här avsnittet innehåller följande avsnitt.