powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Про isc_dsql_execute2
12 сообщений из 12, страница 1 из 1
Про isc_dsql_execute2
    #39362944
Dorin Marcoci
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Смотрю в этой ссылке, так как другую не нашел http://docwiki.embarcadero.com/InterBase/XE7/en/Isc_dsql_execute2()
Думаю поведение одинаковое.

Получается что если если запрос типа select и в качестве out_xsqlda передаем NULL то он будет открывать курсор и дальше как при обычный execute, можно фетчить?

Eсли нас не интересует результат, можно туда на все случаи отправить NULL в isc_dsql_prepare и потом в isc_dsql_execute2?
Я тестировал на FB2.5, ошибок не наблюдаю, но хочется уточнить.
Если можно с NULLом то это будет работать на все распространенные разновидности FB и IB?
...
Рейтинг: 0 / 0
Про isc_dsql_execute2
    #39362964
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dorin MarcociEсли нас не интересует результат, можно туда на все случаи отправить NULL в
isc_dsql_prepare и потом в isc_dsql_execute2?

Если ты будешь выполнять select, то можно, но чтобы результат выборки никого не интересовал?..
В прочих случаях ты должен получить ошибку и если клиент двойки её не даёт, значит
попробуй с тройкой и четвёркой. Во всяком случае, я кодил для такого случая возвращение
ошибки собственными руками, только не помню удалось ли мне пропихнуть это в основной
репозиторий.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Про isc_dsql_execute2
    #39362970
Dorin Marcoci
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovЕсли ты будешь выполнять select, то можно, но чтобы результат выборки никого не интересовал?..

Там просто такая реализация драйвера, для метода exec(). http://php.net/manual/en/pdo.exec.php
И интересуют все типы стэйтментов, если можно пихать там NULL, получается что нет, да?
Я пробовал select и insert и все прошло гладко.
...
Рейтинг: 0 / 0
Про isc_dsql_execute2
    #39362981
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dorin MarcociИ интересуют все типы стэйтментов, если можно пихать там NULL, получается что нет, да?

Лучше не рисковать. Получи тип запроса через isc_dsql_sql_info(isc_info_sql_stmt_type) и
на основании результата решай что и как вызывать.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Про isc_dsql_execute2
    #39363265
Dorin Marcoci
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тоесть можно всегда использовать isc_dsql_execute2, но если тип "select" то обязательно передать NULL в out_xsqlda?
Или вообще определить, вызвать isc_dsql_execute или isc_dsql_execute2?
...
Рейтинг: 0 / 0
Про isc_dsql_execute2
    #39363328
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dorin MarcociТоесть можно всегда использовать isc_dsql_execute2, но если тип "select" то обязательно
передать NULL в out_xsqlda?

Ну, поскольку ты не знаешь почти ничего о запросе, то да. isc_dsql_execute как раз и
вызывает isc_dsql_execute2 с NULL вместо out_sqlda. Можешь посмотреть в исходниках.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Про isc_dsql_execute2
    #39363336
Dorin Marcoci
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov, спасибо за разъяснение! Пока в FB исходников не копался :)
...
Рейтинг: 0 / 0
Про isc_dsql_execute2
    #39363387
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dorin MarcociТам просто такая реализация драйвера, для метода exec(). http://php.net/manual/en/pdo.exec.php
И интересуют все типы стэйтментов, если можно пихать там NULL, получается что нет, да?
Я пробовал select и insert и все прошло гладко.

а теперь попробуй insert ... returning

я уже приводил ссылку на форум Lazarus, и если ему верить то в 2.5 ins/del/upd ... returning через execute Больше не работает, в 2.1 работало - а в 2.5 порядок навели

Я где-то осенью тут топик создавал про API - там была ссылка ,м.б. найдешь если инетресно
...
Рейтинг: 0 / 0
Про isc_dsql_execute2
    #39363443
Dorin Marcoci
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arioch, да, "insert returning" и "execute procedure" только через execute2. Это обсуждалось в соседнем топике.

pdo.exec() это только имя метода на PHP уровне, который выполняет (любой) стэйтмент, а возвращает только affected rows.

Через execute2 можно выполнить все типы стэйтментов (кроме create database и set transaction), если правильно задать out_xsqlda, как я понял.
...
Рейтинг: 0 / 0
Про isc_dsql_execute2
    #39363459
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dorin Marcoci,

насколько я помню, out_xsqlda задаётся только в том случае, когда возвращается не более одной записи.

Это:
execute procedure ... returning_values ...
insert\update\delete ... returning ...
singleton select
singleton execute block

singleton означает, что запрос гарантированно вернёт не более одной записи,
если есть вторая запись, то вернётся ошибка (isc_sing_select_err). Поэтому
нужно понимать: если указан не нулевой out_xsqlda, то движок считает, что
запрос - singleton и делает соотв. проверку.
...
Рейтинг: 0 / 0
Про isc_dsql_execute2
    #39363474
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а если менее одной записи, то другая ошибка/статус ?
...
Рейтинг: 0 / 0
Про isc_dsql_execute2
    #39363485
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dorin MarcociЧерез execute2 можно выполнить все типы стэйтментов (кроме create database и set transaction)

С предварительным препарированием create database будут сложности, а set transaction -
почему нет?..

Ariochа если менее одной записи, то другая ошибка/статус ?
Да - isc_stream_eof.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Про isc_dsql_execute2
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]