使用者所輸入的 SQL 陳述式

執行臨機操作分析的應用程式通常也允許使用者直接輸入 SQL 陳述式。 例如:

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

此方法可簡化應用程式的程式碼撰寫流程;應用程式依賴使用者建置 SQL 陳述式,並仰賴資料來源檢查陳述式的有效性。 因為很難寫出充分展現 SQL 複雜性的圖形化使用者介面,所以直接要求使用者輸入 SQL 陳述式文字,可能是較好的替代方法。 不過,此方法不僅需要使用者瞭解 SQL,也需知道所查詢資料來源的結構描述。 有些應用程式提供的圖形化使用者介面,讓使用者可以建立基本 SQL 陳述式,同時提供文字介面讓使用者修改。