Шаг 175 - Свойство Prepare

Описание
Задает или возвращает значение, указывающее, должен ли запрос перед его выполнением быть подготовлен на сервере как временная сохраненная процедура с помощью функции SQLPrepare интерфейса API ODBC или выполняться непосредственно с помощью функции SQLExecDirect интерфейса API ODBC (только в рабочей области ODBCDirect).

Значение
Задаваемое или возвращаемое значение имеет тип данных Long и определяется с помощью одной из следующих констант:

Замечания
Свойство Prepare используют либо для указания создания на сервере из запроса временной сохраненной процедуры с ее последующим выполнением, либо для указания прямого выполнения запроса. Свойство Prepare по умолчанию получает значение dbQPrepare. Однако можно задать для этого свойства значение dbQUnprepare, исключающее предварительную подготовку запроса. В последнем случае запрос выполняется с помощью функции SQLExecDirect программного интерфейса (API).
Создание сохраненной процедуры может замедлить выполнение первоначальной операции, но ускоряет выполнение всех последующих обращений к запросу. Однако некоторые запросы невозможно выполнить в виде сохраненной процедуры. В этом случае следует задавать для свойства Prepare значение dbQUnprepare.
Если в свойстве Prepare задан режим подготовки запроса dbQPrepare, эта настройка может быть преодолена при выполнении запроса путем указания значения dbExecDirect в аргументе параметры метода Execute.
Функция программного интерфейса ODBC SQLPrepare вызывается после задания значения свойства SQL объектов доступа к данным (DAO). Таким образом, при необходимости повысить быстродействие за счет использования параметра dbQUnprepare необходимо задать значение свойства Prepare до задания значения свойства SQL.

Пример
Следующая программа использует свойство Prepare для указания прямого выполнения запроса без предварительного создания сохраненной процедуры на сервере.

Sub PrepareX()

	Dim wrkODBC As Workspace
	Dim conPubs As Connection
	Dim qdfTemp As QueryDef
	Dim rstTemp As Recordset

	' Создает объект Workspace ODBCDirect и открывает 
	' объект Connection.
	Set wrkODBC = CreateWorkspace("", "admin", "", dbUseODBC)
	Set conPubs = wrkODBC.OpenConnection("Publishers", , , 	"ODBC;DATABASE=pubs;UID=sa;PWD=;DSN=Publishers")
	Set qdfTemp = conPubs.CreateQueryDef("")
	With qdfTemp
		' Этот запрос будет выполнен только один раз, поэтому
		' необходимо вызвать функцию SQLExecDirect API ODBC. 
		' Без задания данного свойства перед определением
		' свойства SQL функция SQLPrepare API ODBC все равно
		' будет выызвана, что приведет к потере всего выигрыша
		' в быстродействии.
		.Prepare = dbQUnprepare
		.SQL = "UPDATE roysched " & "SET royalty = royalty * 2 " & "WHERE title_id LIKE 'BU____' OR " & "title_id LIKE 'PC____'"
		.Execute
	End With

	Debug.Print "Query results:"
	' Открывает набор измененных записей.
	Set rstTemp = conPubs.OpenRecordset( "SELECT * FROM roysched " & "WHERE title_id LIKE 'BU____' OR " & 	"title_id LIKE 'PC____'")
	' Отображает набор записей.
	With rstTemp
		Do While Not .EOF
			Debug.Print , !title_id, !lorange, !hirange, !royalty
			.MoveNext
		Loop
		.Close
	End With
	conPubs.Close
	wrkODBC.Close

End Sub

Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем - 11.04.2002