Pernyataan SQL Yang Dibuat pada Run Time

Aplikasi yang melakukan analisis ad hoc umumnya membangun pernyataan SQL pada waktu proses. Misalnya, spreadsheet mungkin memungkinkan pengguna untuk memilih kolom tempat mengambil data:

// SQL_Statements_Constructed_at_Run_Time.cpp  
#include <windows.h>  
#include <stdio.h>  
#include <sqltypes.h>  
  
int main() {  
   SQLCHAR *Statement = 0, *TableName = 0;  
   SQLCHAR **TableNamesArray, **ColumnNamesArray = 0;  
   BOOL *ColumnSelectedArray = 0;  
   BOOL  CommaNeeded;  
   SQLSMALLINT i = 0, NumColumns = 0;  
  
   // Use SQLTables to build a list of tables (TableNamesArray[]). Let the  
   // user select a table and store the selected table in TableName.  
  
   // Use SQLColumns to build a list of the columns in the selected table  
   // (ColumnNamesArray). Set NumColumns to the number of columns in the  
   // table. Let the user select one or more columns and flag these columns  
   // in ColumnSelectedArray[].  
  
   // Build a SELECT statement from the selected columns.  
   CommaNeeded = FALSE;  
   Statement = (SQLCHAR*)malloc(8);  
   strcpy_s((char*)Statement, 8, "SELECT ");  
  
   for (i = 0 ; i = NumColumns ; i++) {  
      if (ColumnSelectedArray[i]) {  
         if (CommaNeeded)  
            strcat_s((char*)Statement, sizeof(Statement), ",");  
         else  
            CommaNeeded = TRUE;  
         strcat_s((char*)Statement, sizeof(Statement), (char*)ColumnNamesArray[i]);  
      }  
   }  
  
   strcat_s((char*)Statement, 15, " FROM ");  
   // strcat_s((char*)Statement, 100, (char*)TableName);  
  
   // Execute the statement . It will be executed once, do not prepare it.  
   // SQLExecDirect(hstmt, Statement, SQL_NTS);  
}  

Kelas aplikasi lain yang umumnya membuat pernyataan SQL pada run time adalah lingkungan pengembangan aplikasi. Namun, pernyataan yang mereka buat dikodekan secara permanen dalam aplikasi yang mereka bangun, di mana mereka biasanya dapat dioptimalkan dan diuji.

Aplikasi yang membuat pernyataan SQL pada run time dapat memberikan fleksibilitas yang luar biasa kepada pengguna. Seperti yang dapat dilihat dari contoh sebelumnya, yang bahkan tidak mendukung operasi umum seperti klausul WHERE , klausul ORDER BY , atau gabungan, membangun pernyataan SQL pada run time jauh lebih kompleks daripada pernyataan hard-coding. Selain itu, pengujian aplikasi tersebut bermasalah karena mereka dapat membuat sejumlah pernyataan SQL yang sepele.

Potensi kerugian dari pembuatan pernyataan SQL pada run time adalah bahwa dibutuhkan lebih banyak waktu untuk membuat pernyataan daripada menggunakan pernyataan yang dikodekan secara permanen. Untungnya, ini jarang menjadi perhatian. Aplikasi semacam itu cenderung intensif antarmuka pengguna, dan waktu yang dihabiskan aplikasi membangun pernyataan SQL umumnya kecil dibandingkan dengan waktu yang dihabiskan pengguna memasuki kriteria.