Прямое выполнение (ODBC)
Прямое выполнение — это самый простой способ выполнения инструкции. При отправке инструкции для выполнения источник данных компилирует его в план доступа, а затем выполняет этот план доступа.
Прямое выполнение обычно используется универсальными приложениями, которые создают и выполняют инструкции во время выполнения. Например, следующий код создает инструкцию SQL и выполняет ее один раз:
SQLCHAR *SQLStatement;
// Build a SQL statement.
BuildStatement(SQLStatement);
// Execute the statement.
SQLExecDirect(hstmt, SQLStatement, SQL_NTS);
Прямое выполнение лучше всего подходит для инструкций, которые будут выполняться один раз. Его основной недостаток заключается в том, что инструкция SQL анализируется каждый раз при выполнении. Кроме того, приложение не может получить сведения о результирующем наборе, созданном оператором (если таковой) до тех пор, пока не будет выполнена инструкция; Это возможно, если инструкция подготовлена и выполнена в двух отдельных шагах.
Чтобы выполнить инструкцию напрямую, приложение выполняет следующие действия:
Задает значения любых параметров. Дополнительные сведения см. в разделе "Параметры инструкции" далее в этом разделе.
Вызывает SQLExecDirect и передает строку, содержащую инструкцию SQL.
При вызове SQLExecDirect драйвер:
Изменяет инструкцию SQL для использования грамматики SQL источника данных без анализа инструкции; сюда входит замена escape-последовательностей, рассмотренных в escape-последовательностях в ODBC. Приложение может получить измененную форму инструкции SQL, вызвав SQLNativeSql. Escape-последовательности не заменяются, если задан атрибут инструкции SQL_ATTR_NOSCAN.
Извлекает текущие значения параметров и преобразует их по мере необходимости. Дополнительные сведения см. в разделе "Параметры инструкции" далее в этом разделе.
Отправляет инструкцию и преобразует значения параметров в источник данных для выполнения.
Возвращает все ошибки. К ним относятся последовательное или состояние диагностика, такие как SQLSTATE 24000 (недопустимое состояние курсора), синтаксические ошибки, такие как SQLSTATE 42000 (синтаксическая ошибка или нарушение доступа), а также семантические ошибки, такие как SQLSTATE 42S02 (базовая таблица или представление не найдены).