|
|
Приложение
может использовать isc_dsql_sql_info () чтобы
определить тип
инструкции неизвестный при подготовке
инструкции, например когда инструкция
вводится пользователем во время выполнения. Запрашиваемая
информация может включать: -
Тип инструкции -
Число параметров ввода требуемое для
инструкции -
Число параметров вывода возвращаемое
инструкцией -
Детальную
информацию относительно каждого входного
параметра или выходного значения , включая
его тип данных, масштаб, и длину. Чтобы
использовать isc_dsql_sql_info (), выделите буфер
списка элементов, который описывает тип
требуемой информации, и выделите буфер
результатов, куда функция может возвращать
нужную информацию. Например, чтобы
определить неизвестный
тип инструкции, но подготовленной
инструкции, вы должны выделить буфер списка
элементов с одним элементом, и заполнять
его макро константой isc_info_sql_stmt_type,
определенной в ibase.h: type_item[]
= {isc_info_sql_stmt_type};
Буфер
результатов должен быть достаточно большим,
чтобы содержать любые данные, возвращенные
запросом. Надлежащий размер для этого
буфера зависит от требуемой информации.
Если не достаточно выделенной памяти куда
isc_dsql_sql_info () помещает предопределенное
значение, то в последний байт буфера
результатов помещается isc_info_truncated. Вообще,
когда запрашивается информация о типе
инструкции то 8 байт - достаточный размер
буфера. Объявление размера больше чем
необходимо буферу безопасно. Запрос идентифицирующий тип инструкции
возвращает следующую информацию в буфер
результатов: 1. Первый
байт содержит isc_info_sql_stmt_type. 2. Второй
байт содержит число n
говорящее о том сколько байт занимает
следующее значение. 3. Один
или два байта определяют тип инструкции.
Следующая таблица
показывает возвращаемые типы инструкций: isc_info_sql_stmt_select
1 isc_info_sql_stmt_insert
2 isc_info_sql_stmt_update
3 isc_info_sql_stmt_delete
4 isc_info_sql_stmt_ddl
5 isc_info_sql_stmt_get_segment
6 isc_info_sql_stmt_put_segment
7 isc_info_sql_stmt_exec_procedure
8 isc_info_sql_stmt_start_trans
9 isc_info_sql_stmt_commit
10 isc_info_sql_stmt_rollback
11 isc_info_sql_stmt_select_for_upd
12 4.
Последний байт, содержит значение isc_info_end (0).
Значения,
помещенные в буфер результатов не
выровнены. Кроме того, все числа
представлены в универсальном формате, с
самым младшим байтом сначала, и страшим
байтом в конце. Числа со знаком имеют
признак в последнем байте. Преобразуйте
числа к типу данных, присущему к вашей
системе перед их интерпретацией. Обратите
внимание, что вся информация относительно
инструкции кроме ее типа может быть более
легко определена, вызывав
другие функции кроме isc_dsql_sql_info (). Например,
чтобы определить информацию, для
заполнения структуры ввода XSQLDA, вызовите
isc_dsql_describe_bind (). Чтобы заполнить структуру
вывода XSQLDA, вызовите isc_dsql_prepare () или
isc_dsql_describe ().
|
Дизайн: Piton Alien |