IStatement
Интерфейс IStatement
— заменяет (частично) isc_stmt_handle
.
-
getInfo
void getInfo(StatusType* status, unsigned itemsLength, const unsigned char* items, unsigned bufferLength, unsigned char* buffer)
Заменяет
isc_dsql_sql_info()
. -
getType
unsigned getType(StatusType* status)
Тип оператора, в настоящее время можно найти только в источникахfirebird в
dsql/dsql.h
. -
getPlan
const char* getPlan(StatusType* status, FB_BOOLEAN detailed)
Возвращает план выполнения оператора.
-
getAffectedRecords
ISC_UINT64 getAffectedRecords(StatusType* status)
Возвращает количество записей, которые затронуты оператором.
-
getInputMetadata
IMessageMetadata* getInputMetadata(StatusType* status)
Возвращает метаданные параметров.
-
getOutputMetadata
IMessageMetadata* getOutputMetadata(StatusType* status)
Возвращает метаданные значений выходных данных.
-
execute
ITransaction* execute(StatusType* status, ITransaction* transaction, IMessageMetadata* inMetadata, void* inBuffer, IMessageMetadata* outMetadata, void* outBuffer)
Выполняет любую инструкцию SQL, за исключением тех, что возвращаютнескольких строк данных. Частичный аналог
isc_dsql_execute2()
— вход ивыходXSLQDA
заменены на входные и выходные сообщения с соответствующимибуферами. -
openCursor
IResultSet* openCursor(StatusType* status, ITransaction* transaction, IMessageMetadata* inMetadata, void* inBuffer, IMessageMetadata* outMetadata, unsigned flags)
Выполняет оператор SQL, потенциально возвращающий несколько строкданных. Возвращает интерфейс
IResultSet
, который должен использоватьсядля извлечения этих данных. Формат выходных данных определяетсяпараметромoutMetadata
, если указаноNULL
, то будет использоватьсяформат по умолчанию. -
setCursorName
void setCursorName(StatusType* status, const char* name)
Заменяет
isc_dsql_set_cursor_name()
. -
free
void free(StatusType* status)
Уничтожает оператор, освобождает интерфейс в случае успеха.
-
getFlags
unsigned getFlags(StatusType* status)
Возвращает флаги, описывающие, как должен выполняться этот оператор,упрощенная замена метода
getType()
. -
getTimeout
unsigned getTimeout(StatusType* status)
Возвращает таймаут выполнения SQL запроса в миллисекундах.
-
setTimeout
unsigned setTimeout(StatusType* status)
Устанавливает таймаут выполнения SQL запроса в миллисекундах.
-
createBatch
IBatch* createBatch(StatusType* status, IMessageMetadata* inMetadata, unsigned parLength, const unsigned char* par)
Создает интерфейс
IBatch
для оператора SQL с входными параметрами, что позволяет выполнять этот операторс несколькими наборами параметров. Формат входных данных определяется параметромinMetadata
, оставив егоNULL
,пакет использует формат по умолчанию из этого интерфейса. В функциюcreateBatch()
можно передать блок параметров,что позволит настроить поведение пакета.
Константы, определенные интерфейсом IStatement
Флаги IAttachment::prepare()
:
-
PREPARE_PREFETCH_NONE
— константа, чтобы пропускать флаги, значение0.
Следующие флаги могут быть объединены с помощью OR
для полученияжелаемого эффекта:
-
PREPARE_PREFETCH_TYPE
-
PREPARE_PREFETCH_INPUT_PARAMETERS
-
PREPARE_PREFETCH_OUTPUT_PARAMETERS
-
PREPARE_PREFETCH_LEGACY_PLAN
-
PREPARE_PREFETCH_DETAILED_PLAN
-
PREPARE_PREFETCH_AFFECTED_RECORDS
-
PREPARE_PREFETCH_FLAGS
(флаги возвращаемые методомgetFlags()
)
Для наиболее часто используемых комбинаций флагов можно использоватьконстанты:
-
PREPARE_PREFETCH_METADATA
-
PREPARE_PREFETCH_ALL
Значения возвращаемые методом getFlags()
:
-
FLAG_HAS_CURSOR
— используйтеopenCursor()
для выполнения этогооператора, а неexecute()
-
FLAG_REPEAT_EXECUTE
— когда подготовленный оператор можетвыполняться много раз с разными параметрами.
Флаги передаваемые в openCursor()
:
-
CURSOR_TYPE_SCROLLABLE
— открывается двунаправленный курсор.