Condividi tramite


Istruzioni SQL immesse dall'utente

Le applicazioni che eseguono analisi ad hoc in genere consentono anche all'utente di immettere direttamente istruzioni SQL. Ad esempio:

SQLCHAR *     Statement, SqlState[6], Msg[SQL_MAX_MESSAGE_LENGTH];  
SQLSMALLINT   i, MsgLen;  
SQLINTEGER    NativeError;  
SQLRETURN     rc1, rc2;  
  
// Prompt user for SQL statement.  
GetSQLStatement(Statement);  
  
// Execute the statement directly. Because it will be executed only once,  
// do not prepare it.  
rc1 = SQLExecDirect(hstmt, Statement, SQL_NTS);  
  
// Process any errors or returned information.  
if ((rc1 == SQL_ERROR) || rc1 == SQL_SUCCESS_WITH_INFO) {  
   i = 1;  
   while ((rc2 = SQLGetDiagRec(SQL_HANDLE_STMT, hstmt, i, SqlState, &NativeError,  
         Msg, sizeof(Msg), &MsgLen)) != SQL_NO_DATA) {  
      DisplayError(SqlState, NativeError, Msg, MsgLen);  
      i++;  
   }  
}  

Questo approccio semplifica la codifica dell'applicazione; l'applicazione fa affidamento sull'utente che compila l'istruzione SQL e sull'origine dati per verificare la validità dell'istruzione. Poiché è difficile scrivere un'interfaccia utente grafica che esponga adeguatamente le complessità di SQL, potrebbe essere preferibile chiedere all'utente di immettere il testo dell'istruzione SQL. Tuttavia, per fare ciò è necessario che l'utente conosca non solo SQL, ma anche lo schema dell'origine dati su cui viene eseguita una query. Alcune applicazioni forniscono un'interfaccia utente grafica tramite cui l'utente può creare un'istruzione SQL di base e fornire anche un'interfaccia di testo con cui l'utente può modificarla.