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— открывается двунаправленный курсор.