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