用户输入的 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 语句,还提供用户可对其进行修改的文本界面。