Contoh SQL tersemat

Kode berikut adalah program SQL tersemat sederhana, ditulis dalam C. Program ini menggambarkan banyak, tetapi tidak semua, dari teknik SQL yang disematkan. Program ini meminta nomor pesanan kepada pengguna, mengambil nomor pelanggan, tenaga penjualan, dan status pesanan, dan menampilkan informasi yang diambil di layar.

int main() {  
   EXEC SQL INCLUDE SQLCA;  
   EXEC SQL BEGIN DECLARE SECTION;  
      int OrderID;         /* Employee ID (from user)         */  
      int CustID;            /* Retrieved customer ID         */  
      char SalesPerson[10]   /* Retrieved salesperson name      */  
      char Status[6]         /* Retrieved order status        */  
   EXEC SQL END DECLARE SECTION;  
  
   /* Set up error processing */  
   EXEC SQL WHENEVER SQLERROR GOTO query_error;  
   EXEC SQL WHENEVER NOT FOUND GOTO bad_number;  
  
   /* Prompt the user for order number */  
   printf ("Enter order number: ");  
   scanf_s("%d", &OrderID);  
  
   /* Execute the SQL query */  
   EXEC SQL SELECT CustID, SalesPerson, Status  
      FROM Orders  
      WHERE OrderID = :OrderID  
      INTO :CustID, :SalesPerson, :Status;  
  
   /* Display the results */  
   printf ("Customer number:  %d\n", CustID);  
   printf ("Salesperson: %s\n", SalesPerson);  
   printf ("Status: %s\n", Status);  
   exit();  
  
query_error:  
   printf ("SQL error: %ld\n", sqlca->sqlcode);  
   exit();  
  
bad_number:  
   printf ("Invalid order number.\n");  
   exit();  
}  

Perhatikan hal-hal berikut tentang program ini:

  • Variabel Host Variabel host dideklarasikan dalam bagian yang diapit oleh kata kunci BEGIN DECLARE SECTION dan END DECLARE SECTION . Setiap nama variabel host diawali oleh titik dua (:) ketika muncul dalam pernyataan SQL yang disematkan. Titik dua memungkinkan precompiler membedakan antara variabel host dan objek database, seperti tabel dan kolom, yang memiliki nama yang sama.

  • Jenis Data Jenis data yang didukung oleh DBMS dan bahasa host bisa sangat berbeda. Ini mempengaruhi variabel host karena mereka memainkan peran ganda. Di satu sisi, variabel host adalah variabel program, dideklarasikan dan dimanipulasi oleh pernyataan bahasa host. Di sisi lain, mereka digunakan dalam pernyataan SQL yang disematkan untuk mengambil data database. Jika tidak ada jenis bahasa host yang sesuai dengan jenis data DBMS, DBMS secara otomatis mengonversi data. Namun, karena setiap DBMS memiliki aturan dan idiosyncrasi sendiri yang terkait dengan proses konversi, jenis variabel host harus dipilih dengan hati-hati.

  • Penanganan Kesalahan DBMS melaporkan kesalahan run-time ke program aplikasi melalui Area Komunikasi SQL, atau SQLCA. Dalam contoh kode sebelumnya, pernyataan SQL pertama yang disematkan adalah INCLUDE SQLCA. Ini memberi tahu precompiler untuk menyertakan struktur SQLCA dalam program. Ini diperlukan setiap kali program akan memproses kesalahan yang dikembalikan oleh DBMS. KAPANPUN... Pernyataan GOTO memberi tahu precompiler untuk menghasilkan kode penanganan kesalahan yang bercabang ke label tertentu ketika terjadi kesalahan.

  • Singleton SELECT Pernyataan yang digunakan untuk mengembalikan data adalah pernyataan SELECT singleton; yaitu, hanya mengembalikan satu baris data. Oleh karena itu, contoh kode tidak mendeklarasikan atau menggunakan kursor.