Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
Az alkalmi elemzést végző alkalmazások gyakran futtatáskor készítik el az SQL-utasításokat. Egy számolótábla például lehetővé teheti, hogy a felhasználó olyan oszlopokat jelöljön ki, amelyekből adatokat kér le:
// 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);
}
Az SQL-utasításokat futásidőben gyakran létrehozó alkalmazások egy másik osztálya az alkalmazásfejlesztési környezet. Az általuk létrehozott utasítások azonban szigorúan kódoltak az általuk létrehozott alkalmazásban, ahol általában optimalizálhatók és tesztelhetők.
Az SQL-utasításokat futásidőben összeállító alkalmazások óriási rugalmasságot biztosíthatnak a felhasználó számára. Ahogy az előző példában látható, amely még olyan gyakori műveleteket sem támogatott, mint a WHERE záradékok, az ORDER BY záradékok vagy az illesztések, az SQL-utasítások futásidőben történő létrehozása sokkal összetettebb, mint a kemény kódolású utasítások. Emellett az ilyen alkalmazások tesztelése azért is problémás, mert tetszőleges számú SQL-utasítást hozhatnak létre.
Az SQL-utasítások futásidőben történő létrehozásának egyik lehetséges hátránya, hogy sokkal több időt vesz igénybe egy utasítás létrehozása, mint egy szigorúan kódolt utasítás használata. Szerencsére ez ritkán okoz gondot. Az ilyen alkalmazások általában nagy felhasználói felülettel bírnak, és az sql-utasítások létrehozására fordított idő általában kicsi ahhoz képest, hogy a felhasználó mennyi időt tölt a feltételek megadásával.