Mengompilasi Program SQL Tersemat

Karena program SQL yang disematkan berisi campuran pernyataan bahasa SQL dan host, program tersebut tidak dapat dikirimkan langsung ke pengkompilasi untuk bahasa host. Sebaliknya, ini dikompilasi melalui proses multistep. Meskipun proses ini berbeda dari produk ke produk, langkah-langkahnya kira-kira sama untuk semua produk.

Ilustrasi ini menunjukkan langkah-langkah yang diperlukan untuk mengkompilasi program SQL yang disematkan.

Steps to compile an embedded SQL program

Lima langkah dilibatkan dalam mengkompilasi program SQL yang disematkan:

  1. Program SQL yang disematkan dikirimkan ke prekomiler SQL, alat pemrograman. Prakompilasi memindai program, menemukan pernyataan SQL yang disematkan, dan memprosesnya. Prakompilasi yang berbeda diperlukan untuk setiap bahasa pemrograman yang didukung oleh DBMS. Produk DBMS biasanya menawarkan prekomilier untuk satu atau beberapa bahasa, termasuk C, Pascal, COBOL, Fortran, Ada, PL/I, dan berbagai bahasa perakitan.

  2. Precompiler menghasilkan dua file output. File pertama adalah file sumber, dilucuti dari pernyataan SQL yang disematkan. Sebagai gantinya, prakompilasi menggantikan panggilan ke rutinitas DBMS eksklusif yang menyediakan tautan run-time antara program dan DBMS. Biasanya, nama dan urutan panggilan rutinitas ini hanya diketahui oleh prakompilasi dan DBMS; mereka bukan antarmuka publik ke DBMS. File kedua adalah salinan semua pernyataan SQL tersemat yang digunakan dalam program. File ini terkadang disebut modul permintaan database, atau DBRM.

  3. Output file sumber dari prakompilasi dikirimkan ke pengkompilasi standar untuk bahasa pemrograman host (seperti pengkompilasi C atau COBOL). Pengkompilasi memproses kode sumber dan menghasilkan kode objek sebagai outputnya. Perhatikan bahwa langkah ini tidak ada hubungannya dengan DBMS atau dengan SQL.

  4. Linker menerima modul objek yang dihasilkan oleh pengkompilasi, menautkannya dengan berbagai rutinitas pustaka, dan menghasilkan program yang dapat dieksekusi. Rutinitas pustaka yang ditautkan ke dalam program yang dapat dieksekusi mencakup rutinitas DBMS eksklusif yang dijelaskan pada langkah 2.

  5. Modul permintaan database yang dihasilkan oleh precompiler dikirimkan ke utilitas pengikatan khusus. Utilitas ini memeriksa pernyataan SQL, mengurai, memvalidasi, dan mengoptimalkannya, lalu menghasilkan rencana akses untuk setiap pernyataan. Hasilnya adalah paket akses gabungan untuk seluruh program, mewakili versi yang dapat dieksekusi dari pernyataan SQL yang disematkan. Utilitas pengikatan menyimpan rencana dalam database, biasanya menetapkan nama program aplikasi yang akan menggunakannya. Apakah langkah ini terjadi pada waktu kompilasi atau run time tergantung pada DBMS.

Perhatikan bahwa langkah-langkah yang digunakan untuk mengkompilasi program SQL yang disematkan berkorelasi sangat erat dengan langkah-langkah yang dijelaskan sebelumnya dalam Memproses Pernyataan SQL. Secara khusus, perhatikan bahwa prakompilasi memisahkan pernyataan SQL dari kode bahasa host, dan utilitas pengikatan mengurai dan memvalidasi pernyataan SQL dan membuat rencana akses. Di DBMSs di mana langkah 5 berlangsung pada waktu kompilasi, empat langkah pertama pemrosesan pernyataan SQL terjadi pada waktu kompilasi, sementara langkah terakhir (eksekusi) berlangsung pada waktu proses. Ini memiliki efek membuat eksekusi kueri dalam DBMSs seperti itu sangat cepat.