Bagikan melalui


Kumpulan Pernyataan SQL

Batch pernyataan SQL adalah sekumpulan pernyataan SQL yang terdiri dari dua atau lebih pernyataan SQL, atau sebuah pernyataan SQL tunggal yang memiliki efek yang sama dengan sekumpulan pernyataan SQL yang terdiri dari dua atau lebih pernyataan SQL. Pernyataan batching dapat meningkatkan performa dengan mengurangi lalu lintas jaringan dan memungkinkan sumber data mengoptimalkan eksekusi.

Jenis-jenis batch

Dalam beberapa implementasi, seluruh pernyataan batch dijalankan sebelum hasil apa pun tersedia. Ini sering lebih efisien daripada mengirimkan pernyataan secara terpisah, karena lalu lintas jaringan sering dapat dikurangi dan sumber data terkadang dapat mengoptimalkan eksekusi batch pernyataan SQL. Dalam implementasi lain, memanggil SQLMoreResults memicu eksekusi pernyataan berikutnya dalam batch. ODBC mendukung jenis batch berikut:

  • Batch EksplisitBatch eksplisit adalah dua pernyataan SQL atau lebih yang dipisahkan oleh titik koma (;). Misalnya, batch pernyataan SQL berikut membuka pesanan penjualan baru. Ini memerlukan penyisipan baris ke dalam tabel Pesanan dan Baris. Perhatikan bahwa tidak ada titik koma setelah pernyataan terakhir.

    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)  
    
  • Prosedur Jika prosedur berisi lebih dari satu pernyataan SQL, itu dianggap sebagai batch pernyataan SQL. Misalnya, pernyataan khusus SQL Server berikut membuat prosedur yang mengembalikan kumpulan hasil yang berisi informasi tentang pelanggan dan kumpulan hasil yang mencantumkan semua pesanan penjualan terbuka untuk pelanggan tersebut:

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

    Pernyataan CREATE PROCEDURE itu sendiri bukan batch pernyataan SQL. Namun, prosedur yang dibuatnya adalah sekumpulan pernyataan SQL. Tidak ada titik koma yang memisahkan dua pernyataan SELECT karena pernyataan CREATE PROCEDURE khusus untuk SQL Server, dan SQL Server tidak memerlukan titik koma untuk memisahkan beberapa pernyataan dalam pernyataan CREATE PROCEDURE .

  • Array Parameter - Array parameter dapat digunakan dengan pernyataan SQL berparameter sebagai cara yang efektif untuk melakukan operasi massal. Misalnya, array parameter dapat digunakan dengan pernyataan INSERT berikut untuk menyisipkan beberapa baris ke dalam tabel Baris sambil menjalankan hanya satu pernyataan SQL:

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

    Jika sumber data tidak mendukung array parameter, driver dapat menirunya dengan menjalankan pernyataan SQL sekali untuk setiap set parameter. Untuk informasi selengkapnya, lihat Parameter Pernyataan dan Array Nilai Parameter, nanti di artikel ini.

Berbagai jenis batch tidak dapat dicampur dengan cara yang kompatibel. Artinya, bagaimana aplikasi menentukan hasil dari menjalankan batch eksplisit yang mencakup panggilan prosedur, batch eksplisit yang menggunakan array parameter, serta panggilan prosedur yang menggunakan array parameter bergantung pada driver.