Dávky příkazů SQL

Dávka příkazů SQL je skupina dvou nebo více příkazů SQL nebo jeden příkaz SQL, který má stejný účinek jako skupina dvou nebo více příkazů SQL. Dávkové příkazy můžou zvýšit výkon snížením síťového provozu a umožněním zdroji dat optimalizovat provádění.

Typy dávek

V některých implementacích se provede celý příkaz batch předtím, než budou k dispozici všechny výsledky. To je často efektivnější než samostatné odesílání příkazů, protože síťový provoz může být často snížen a zdroj dat může někdy optimalizovat provádění dávky příkazů SQL. V jiných implementacích volání SQLMoreResults vyvolá provedení dalšího příkazu v rámci dávky. Rozhraní ODBC podporuje následující typy dávek:

  • Explicitní dávkyExplicitní dávka je dva nebo více příkazů SQL oddělených středníky (;). Například následující dávka příkazů SQL otevře novou prodejní objednávku. To vyžaduje vložení řádků do tabulek Objednávky i Položky. Všimněte si, že po posledním příkazu není žádný středník.

    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)  
    
  • Postupy Pokud procedura obsahuje více než jeden příkaz SQL, považuje se za dávku příkazů SQL. Například následující příkaz specifický pro SQL Server vytvoří proceduru, která vrátí sadu výsledků obsahující informace o zákazníkovi a sadu výsledků se seznamem všech otevřených prodejních objednávek pro daného zákazníka:

    CREATE PROCEDURE GetCustInfo (@CustomerID INT) AS  
       SELECT * FROM Customers WHERE CustID = @CustomerID  
       SELECT OrderID FROM Orders  
          WHERE CustID = @CustomerID AND Status = 'OPEN'  
    

    Samotný příkaz CREATE PROCEDURE není dávkou příkazů SQL. Postup, který vytvoří, je však dávka příkazů SQL. Žádné středníky oddělují dva příkazy SELECT , protože příkaz CREATE PROCEDURE je specifický pro SQL Server a SQL Server nevyžaduje středníky k oddělení více příkazů v příkazu CREATE PROCEDURE .

  • Pole parametrů – Pole parametrů lze použít s parametrizovaným příkazem SQL jako efektivní způsob provádění hromadných operací. Například pole parametrů lze použít s následujícím příkazem INSERT k vložení více řádků do tabulky Řádky při provádění pouze jednoho příkazu SQL:

    INSERT INTO Lines (OrderID, Line, PartID, Quantity)  
       VALUES (?, ?, ?, ?)  
    

    Pokud zdroj dat nepodporuje pole parametrů, ovladač je může emulovat spuštěním příkazu SQL jednou pro každou sadu parametrů. Další informace naleznete v tématu Parametry příkazu a pole hodnot parametrů dále v tomto článku.

Různé typy dávek nelze kombinovat interoperabilním způsobem. To znamená, že způsob, jakým aplikace určuje výsledek provádění explicitní dávky zahrnující volání procedur, explicitní dávku, která používá pole parametrů, a volání procedury, která používá pole parametrů, je specifické pro ovladač.