Freigeben über


Vom Benutzer eingegebene SQL-Anweisungen

Anwendungen, die Ad-hoc-Analysen durchführen, ermöglichen es dem Benutzer auch häufig, SQL-Anweisungen direkt einzugeben. Beispiel:

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++;  
   }  
}  

Dieser Ansatz vereinfacht die Anwendungscodierung; die Anwendung basiert auf dem Benutzer, um die SQL-Anweisung und die Datenquelle zu erstellen, um die Gültigkeit der Anweisung zu überprüfen. Da es schwierig ist, eine grafische Benutzeroberfläche zu schreiben, die die Ungenauigkeiten von SQL angemessen verfügbar macht, kann es sinnvoll sein, den Text der SQL-Anweisung einzugeben. Dies erfordert jedoch, dass der Benutzer nicht nur SQL, sondern auch das Schema der abgefragten Datenquelle kennen muss. Einige Anwendungen stellen eine grafische Benutzeroberfläche bereit, über die der Benutzer eine einfache SQL-Anweisung erstellen kann, und außerdem eine Textoberfläche bereitstellen, mit der der Benutzer sie ändern kann.