Instrucciones SQL escritas por el usuario
Las aplicaciones que realizan análisis ad hoc también suelen permitir al usuario escribir instrucciones SQL directamente. Por ejemplo:
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++;
}
}
Este enfoque simplifica la codificación de aplicaciones; la aplicación se basa en el usuario para compilar la instrucción SQL y en el origen de datos para comprobar la validez de la instrucción. Dado que es difícil escribir una interfaz gráfica de usuario que expone adecuadamente las complejidades de SQL, simplemente pedir al usuario que escriba el texto de la instrucción SQL puede ser una alternativa preferible. Sin embargo, esto requiere que el usuario sepa no solo SQL, sino también el esquema del origen de datos que se está consultando. Algunas aplicaciones proporcionan una interfaz gráfica de usuario por la que el usuario puede crear una instrucción SQL básica y también proporcionar una interfaz de texto con la que el usuario puede modificarla.