powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / результат селекта в хп
15 сообщений из 15, страница 1 из 1
результат селекта в хп
    #39096174
max_guest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Приветы!

Подскажите плс.
Есть такой запрос:

Код: sql
1.
2.
3.
4.
5.
    DECLARE var INT DEFAULT NULL;
    SELECT id INTO var WHERE 1=0;
    IF ( var IS NULL ) THEN
        LEAVE no_data;
    END IF;



Если запрос ничего не возвращает, то можно быть уверенным, что переменная не устанавливается

Или она устанавливается в NULL?

Код: sql
1.
2.
3.
4.
5.
    DECLARE var INT DEFAULT 22;
    SELECT id INTO var WHERE 1=0;
    IF ( var IS NULL ) THEN
        LEAVE no_data;
    END IF;



Это правильный способ убедиться, что запрос ничего не вернул?
...
Рейтинг: 0 / 0
результат селекта в хп
    #39096188
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
max_guestЭто правильный способ убедиться, что запрос ничего не вернул?
Запрос ВСЕГДА что-то "возвращает" - это не чёрная дыра. Это что-то может быть набором записей (в т.ч. не содержащим ни одной записи), сообщением об ошибке или сообщением о результате выполнения не возвращающего результирующего набора записей запроса (сведения о количестве изменённых записей).
...
Рейтинг: 0 / 0
результат селекта в хп
    #39096210
max_guest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akinamax_guestЭто правильный способ убедиться, что запрос ничего не вернул?
Запрос ВСЕГДА что-то "возвращает" - это не чёрная дыра. Это что-то может быть набором записей (в т.ч. не содержащим ни одной записи), сообщением об ошибке или сообщением о результате выполнения не возвращающего результирующего набора записей запроса (сведения о количестве изменённых записей).

А если по теме?

Из ответа не ясно, значение var будет в null установлено если результирующего набора записей не будет или это значение не изменится?

Т.е. это можно использовать как критерий того, что результат ноль строк?
Или нужно всегда использовать found_rows()?
При пробах нал получается, но на сколько это правильно?

По сути вопрос таой, если это не правильно, то как правильно?
...
Рейтинг: 0 / 0
результат селекта в хп
    #39096236
max_guest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Чисто экспериментально значение не устанавливается в случае пустого результата.

Но не ясно, можно ли быть уверенным, что так будет в любом случае, и


Как правильно в ХП определить, что селект вернул 0 записей?
...
Рейтинг: 0 / 0
результат селекта в хп
    #39096271
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
max_guestКак правильно в ХП определить, что селект вернул 0 записей?
http://dev.mysql.com/doc/refman/5.6/en/information-functions.html#function_found-rows
...
Рейтинг: 0 / 0
результат селекта в хп
    #39096349
max_guest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akinamax_guestКак правильно в ХП определить, что селект вернул 0 записей?
http://dev.mysql.com/doc/refman/5.6/en/information-functions.html#function_found-rows

т.е. правильно found_rows, понял.
Спасибо!
...
Рейтинг: 0 / 0
результат селекта в хп
    #39096409
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
max_guest,
только это не правильно
при возврате из хранимки значения found_rows
приложение воспримет его также как и результат селекта
...
Рейтинг: 0 / 0
результат селекта в хп
    #39096419
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяпри возврате из хранимки значения found_rows
приложение воспримет его также как и результат селекта
А кто сказал, что ему нужно ВЕРНУТЬ ИЗ ХП что-то? ему нужно организовать ветвление в зависимости от наличия/отсутствия данных в наборе записей.
...
Рейтинг: 0 / 0
результат селекта в хп
    #39096438
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akinaвадяпри возврате из хранимки значения found_rows
приложение воспримет его также как и результат селекта
А кто сказал, что ему нужно ВЕРНУТЬ ИЗ ХП что-то? ему нужно организовать ветвление в зависимости от наличия/отсутствия данных в наборе записей.
тогда это делается проще и быстрее
тем же count
...
Рейтинг: 0 / 0
результат селекта в хп
    #39096444
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а если found_rows, после обыкновенного селекта, то зранимка вернет этот результат, пустой или нет
и будет хранимка с множественным набором данных
...
Рейтинг: 0 / 0
результат селекта в хп
    #39096455
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
select count(*) into @n from...
для внутреннего анализа и перехода по if
...
Рейтинг: 0 / 0
результат селекта в хп
    #39096552
max_guest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо за ответы!

Да, это проверка на наличие/отсутствие записи в БД для дальнейших действий.

found_rows подходит прекрасно, count() тоже.

Вопрос вылез т.к. я переделываю чужой сайт, а там подобные проверки, описанные в первом сообщении, на каждом шагу. Меня интересовало стоит ли их трогать или нет.
...
Рейтинг: 0 / 0
результат селекта в хп
    #39096586
max_guest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
О, про канут вспомнил,что мне в нем не нравилось.

С count() вопрос в том, что зачастую идет проверка

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
select id into var from..


if ( var is null ) then
leave no_data;
end if;


а далее идет



select ddd from tbl where id=var



т.е. с каунтом лишний селект получается, чтобы получить значение var

объединять

Код: sql
1.
select id, count(id) into var, test_var



мои знания sql не дают однозначный ответ на тему на сколько это корректно.
но текущая задача была понять на сколько корректно сделано сейчас.
...
Рейтинг: 0 / 0
результат селекта в хп
    #39096598
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
max_guestобъединять
Код: sql
1.
select id, count(id) into var, test_var


мои знания sql не дают однозначный ответ на тему на сколько это корректно.
Абсолютно НЕкорректно.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
mysql> create table test (id int);
Query OK, 0 rows affected (0.82 sec)

mysql> insert into test
    -> select 1 union select 2;
Query OK, 2 rows affected (0.07 sec)
Records: 2  Duplicates: 0  Warnings: 0

mysql> select id from test;
+------+
| id   |
+------+
|    1 |
|    2 |
+------+
2 rows in set (0.02 sec)

mysql> select id, count(id) from test;
+------+-----------+
| id   | count(id) |
+------+-----------+
|    1 |         2 |
+------+-----------+
1 row in set (0.00 sec)

mysql> select id, count(id) from test where id > 3;
+------+-----------+
| id   | count(id) |
+------+-----------+
| NULL |         0 |
+------+-----------+
1 row in set (0.00 sec)
...
Рейтинг: 0 / 0
результат селекта в хп
    #39097372
artush
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina, да, спасибо)
(я вспомнил свой логин)
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / результат селекта в хп
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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