Уроки Iczelion'а


Урок 3. Подготовка и Использование Инструкций - часть 3


/p>

  Пример:

.data SQLStmt db "select * from Sales",0 .data? hStmt dd ? .code ..... invoke SQLAllocHandle, SQL_HANDLE_STMT, hConn, addr hStmt .if ax==SQL_SUCCESS || ax==SQL_SUCCESS_WITH_INFO invoke SQLExecDirect, hStmt, addr SQLStmt, sizeof SQLStmt

ПОДГОТОВЛЕННОЕ ВЫПОЛНЕНИЕ

  Процесс выполнения инструкции SQL разделен на две фазы. В первой фазе, вы должны подготовить инструкцию, вызывая SQLPrepare. Затем, вы вызываете SQLEXECUTE, чтобы фактически выполнить инструкцию. Используя подготовленное выполнение, вы можете исполнять с помощью SQLEXECUTE ту же самую инструкцию SQL любое число раз.

  SQLPrepare принимает те же самые три параметра, что и SQLExecDirect, так что я не буду показывать его определение здесь. SQLExecute имеет следующий синтаксис: SQLExecute proto StatementHandle:DWORD

  Пример: .data SQLStmt db "select * from Sales",0 .data? hStmt dd ? .code ..... invoke SQLAllocHandle, SQL_HANDLE_STMT, hConn, addr hStmt .if ax==SQL_SUCCESS || ax==SQL_SUCCESS_WITH_INFO invoke SQLPrepare, hStmt, addr SQLStmt, sizeof SQLStmt invoke SQLExecute, hStmt

  Вы можете задаться вопросом, каково преимущество подготовленного выполнения по сравнению с немедленным выполнением. От вышеупомянутых примеров, это не очевидно. Мы должны знать кое что относительно операторных параметров, чтобы быть квалифицированными в оценке этого.

ОПЕРАТОРНЫЕ ПАРАМЕТРЫ

  Параметры, как упомянуто здесь, являются переменными, которые используются инструкциями SQL. Например, если мы имеем таблицу названную "служащие"(employee), которая имеет три поля: "имя"(name), "фамилия", и "Номер_телефона"(telephoneNo), и мы должны найти номер телефона служащего по имени Bob, то мы можем использовать следующую инструкцию SQL: select telephoneNo from employee where name='Bob'

  Эта инструкция SQL будет работать так как мы хотим, но что, если мы хотим найти телефон другого служащего? Если вы не используете параметр, вы не имеете свободы выбора, но можно создать новую строку SQL и откомпилировать/выполнить её снова.

  Теперь скажем, что мы не можем допустить эту неэффективность. Мы можем использовать параметр в наших интересах. В нашем примере выше, мы должны заменить строку/значение?. Строка SQL будет: select telephoneNo from employee where name=?




- Начало -  - Назад -  - Вперед -