Поделиться через


Инструкции 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, а также предоставить текстовый интерфейс, с помощью которого пользователь может изменить его.