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 SQL-utasítások kötege két vagy több SQL-utasításból vagy egyetlen SQL-utasításból álló csoport, amelynek ugyanaz a hatása, mint két vagy több SQL-utasításból álló csoportnak. A kötegelési utasítások növelhetik a teljesítményt azáltal, hogy csökkentik a hálózati forgalmat, és lehetővé teszik az adatforrás számára a végrehajtás optimalizálását.
Kötegek típusai
Bizonyos megvalósításoknál a rendszer a teljes kötegelt utasítást végrehajtja, mielőtt bármilyen eredmény elérhetővé válna. Ez gyakran hatékonyabb, mint az utasítások külön küldése, mivel a hálózati forgalom gyakran csökkenthető, és az adatforrás néha optimalizálhatja az SQL-utasítások kötegének végrehajtását. Más implementációkban az SQLMoreResults meghívása elindítja a következő utasítás végrehajtását a kötegben. Az ODBC a következő kötegtípusokat támogatja:
Explicit kötegek Az explicit köteg két vagy több, pontosvesszővel elválasztott SQL-utasítás (;). A következő SQL-utasításköteg például új értékesítési rendelést nyit meg. Ehhez sorokat kell beszúrni az Orders és a Lines táblába is. Ne feledje, hogy az utolsó utasítás után nincs pontosvessző.
INSERT INTO Orders (OrderID, CustID, OpenDate, SalesPerson, Status) VALUES (2002, 1001, {fn CURDATE()}, 'Garcia', 'OPEN'); INSERT INTO Lines (OrderID, Line, PartID, Quantity) VALUES (2002, 1, 1234, 10); INSERT INTO Lines (OrderID, Line, PartID, Quantity) VALUES (2002, 2, 987, 8); INSERT INTO Lines (OrderID, Line, PartID, Quantity) VALUES (2002, 3, 566, 17); INSERT INTO Lines (OrderID, Line, PartID, Quantity) VALUES (2002, 4, 412, 500)Eljárások Ha egy eljárás több SQL-utasítást tartalmaz, az SQL-utasítások kötegének minősül. A következő SQL Server-specifikus utasítás például létrehoz egy eljárást, amely egy ügyfél adatait tartalmazó eredményhalmazt ad vissza, és egy eredménykészletet, amely felsorolja az adott ügyfél összes nyitott értékesítési rendelését:
CREATE PROCEDURE GetCustInfo (@CustomerID INT) AS SELECT * FROM Customers WHERE CustID = @CustomerID SELECT OrderID FROM Orders WHERE CustID = @CustomerID AND Status = 'OPEN'Maga a CREATE PROCEDURE utasítás nem egy csomag SQL-utasításokból áll. Az eljárás, amelyet létrehoz, azonban egy SQL-utasításokból álló köteg. Nincs pontosvessző a két SELECT utasítás között, mert a CREATE PROCEDURE utasítás az SQL Serverre vonatkozik, és az SQL Server nem követel meg pontosvesszőket a CREATE PROCEDURE utasítás több utasításának elválasztásához.
Paraméterek tömbjei – A paraméterek tömbjei paraméteres SQL-utasítással használhatók hatékony módszerként a tömeges műveletek végrehajtásához. A paraméterek tömbjei például a következő INSERT utasítással több sort szúrhatnak be a Sorok táblába, miközben csak egyetlen SQL-utasítást hajtanak végre:
INSERT INTO Lines (OrderID, Line, PartID, Quantity) VALUES (?, ?, ?, ?)Ha egy adatforrás nem támogatja a paraméterek tömbjeinek használatát, az illesztőprogram az SQL-utasítás végrehajtásával emulálhatja őket minden paraméterkészlethez egyszer. További információ: Utasítás paraméterei és Paraméterértékek tömbjei, a cikk későbbi részében.
A különböző kötegtípusok nem keverhetők interoperatív módon. Ez azt jelenti, hogy az alkalmazás hogyan határozza meg az eljáráshívásokat tartalmazó explicit köteg végrehajtásának eredményét, a paraméterek tömbjét használó explicit köteg és a paraméterek tömbjét használó eljáráshívás illesztőprogram-specifikus.