Megosztás:


SQL-utasítások kötegei

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.