powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Как определить тип запроса в PHP OCI?
8 сообщений из 8, страница 1 из 1
Как определить тип запроса в PHP OCI?
    #38667662
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Работаю с СУБД Oracle.
Для работы с БД использую функцию-обертку, которая выполняет при необходимости oci_connect, выбирает SQL-запрос, выполняет с ним oci_parse, если у запроса есть параметры, выполняет для них oci_bind_by_name, затем выполняет oci_execute и наконец получает данные oci_fetch_array.
Но если запрос не возвращает данных (например alter session), то при выполнении oci_fetch_array в логах выдается ошибка о том, что не были привязаны параметры или переменные.
Как можно определить, возвращает ли запрос данные (select) или нет и в последнем случае не выполнять oci_fetch_array ?
________________________
Мы смотрим с оптимизмом...
...в оптический прицел.
...
Рейтинг: 0 / 0
Как определить тип запроса в PHP OCI?
    #38667671
Фотография ScareCrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
is_bool
...
Рейтинг: 0 / 0
Как определить тип запроса в PHP OCI?
    #38667719
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А причем тут is_bool?
oci_execute всегда возвращает bool.
oci_fetch_array возвращает false при отсутствии данных, но в лог сообщение об ошибке при этом выдается.
Мне же нужно вообще не выполнять oci_fetch_array для не select-запросов.

Пока что я использую oci_statement_type (сравниваю с SELECT).
В моей задаче работает, но это частное решение, т.к. данные могут возвращать и процедуры.
Хотелось бы решения общего.
...
Рейтинг: 0 / 0
Как определить тип запроса в PHP OCI?
    #38667752
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну видимо если в тексте запроса нет слова SELECT, то и запрос не SELECT, логично жеж
...
Рейтинг: 0 / 0
Как определить тип запроса в PHP OCI?
    #38667782
alex564657498765453
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alibek B.А причем тут is_bool?
oci_execute всегда возвращает bool.
oci_fetch_array возвращает false при отсутствии данных, но в лог сообщение об ошибке при этом выдается.
Мне же нужно вообще не выполнять oci_fetch_array для не select-запросов.

Пока что я использую oci_statement_type (сравниваю с SELECT).
В моей задаче работает, но это частное решение, т.к. данные могут возвращать и процедуры.
Хотелось бы решения общего.

общее решение
экзекьют вернул тру, значит запрос удался, если ветч арей вернул фолс(а ваще по идее там должно быть поле типо роу_каунт, сколько строк вернуло) - значит запрос не возвращал данные. ещо там должно быть поле типо аффектид роус, если были удаление, изменение данных.

а по харошему, ты ж делал запрос..ты ведь знаешь что ты делал.

а если ещо доку внимательней почитать,

короче поискал для тебя

тыц
полагаю вернёт пустое значение если запрос ничего не возвращал

НАВОДЯЩИЙ ВОПРОС
как отличить оператор селект или вызов процедуры которая чтото там вернула ??? не парся скл строку? думаеться мне никак..технически никак, структура ответа сервера идентична

а как отличить выборку с нулевым результатом от не выборки???

твой вопрос вцелом похож на - как отличить, почему сервер требует авторизацию, - логин и пароль не верен, или просто пароль стал новый? - а никак, протоколом ХТТП это не предусмотренно, в обоих случаях получишь 401 ответ.
...
Рейтинг: 0 / 0
Как определить тип запроса в PHP OCI?
    #38667971
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hettну видимо если в тексте запроса нет слова SELECT, то и запрос не SELECT, логично жеж
Нет, не логично.
Данные может получать хранимая процедура.
Запрос может начинаться не со слова SELECT (а например со слова WITH).
SQL-запрос вообще может состоять из нескольких запросов, разделенных точкой с запятой.
Поэтому ориентироваться на текст запроса нельзя, нужно опрашивать сервер.

alex564657498765453 , я хочу свести ошибки в логах к минимуму.
Использование oci_fetch_array никаких сбоев не вызывает, только запись в логе.
Хочу не вызывать oci_fetch_array в тех случаях, когда этого не требуется, чтобы в логах этих записей не было.

Проверки oci_statement_type недостаточно, т.к. CALL и BEGIN могут и возвращать записи, и не возвращать.
...
Рейтинг: 0 / 0
Как определить тип запроса в PHP OCI?
    #38667992
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex564657498765453а как отличить выборку с нулевым результатом от не выборки???
В Perl это можно сделать по возвращаемому значению execute, для успешных запросов, возвращающих набор данных, execute всегда возвращает true, даже если выборка пустая. В OCI я такой возможности пока не нашел.
...
Рейтинг: 0 / 0
Как определить тип запроса в PHP OCI?
    #38668128
alex564657498765453
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alibek B.alex564657498765453а как отличить выборку с нулевым результатом от не выборки???
В Perl это можно сделать по возвращаемому значению execute, для успешных запросов, возвращающих набор данных, execute всегда возвращает true, даже если выборка пустая. В OCI я такой возможности пока не нашел.

и в перле нет возможности подавлять ошибку ??? в пхп собака перед командой подавляет стандартную обработку ошибки(нестандартная - это твоя собсвенная, где ты сможешь увидеть, что эта ошибка возникла, но она подавлена)
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Как определить тип запроса в PHP OCI?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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