Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / результат селекта в хп / 15 сообщений из 15, страница 1 из 1
06.11.2015, 09:36:02
    #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
06.11.2015, 09:49:55
    #39096188
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
результат селекта в хп
max_guestЭто правильный способ убедиться, что запрос ничего не вернул?
Запрос ВСЕГДА что-то "возвращает" - это не чёрная дыра. Это что-то может быть набором записей (в т.ч. не содержащим ни одной записи), сообщением об ошибке или сообщением о результате выполнения не возвращающего результирующего набора записей запроса (сведения о количестве изменённых записей).
...
Рейтинг: 0 / 0
06.11.2015, 10:08:50
    #39096210
max_guest
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
результат селекта в хп
Akinamax_guestЭто правильный способ убедиться, что запрос ничего не вернул?
Запрос ВСЕГДА что-то "возвращает" - это не чёрная дыра. Это что-то может быть набором записей (в т.ч. не содержащим ни одной записи), сообщением об ошибке или сообщением о результате выполнения не возвращающего результирующего набора записей запроса (сведения о количестве изменённых записей).

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

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

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

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

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


Как правильно в ХП определить, что селект вернул 0 записей?
...
Рейтинг: 0 / 0
06.11.2015, 10:47:49
    #39096271
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
результат селекта в хп
max_guestКак правильно в ХП определить, что селект вернул 0 записей?
http://dev.mysql.com/doc/refman/5.6/en/information-functions.html#function_found-rows
...
Рейтинг: 0 / 0
06.11.2015, 11:38:44
    #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
06.11.2015, 12:15:51
    #39096409
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
результат селекта в хп
max_guest,
только это не правильно
при возврате из хранимки значения found_rows
приложение воспримет его также как и результат селекта
...
Рейтинг: 0 / 0
06.11.2015, 12:18:21
    #39096419
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
результат селекта в хп
вадяпри возврате из хранимки значения found_rows
приложение воспримет его также как и результат селекта
А кто сказал, что ему нужно ВЕРНУТЬ ИЗ ХП что-то? ему нужно организовать ветвление в зависимости от наличия/отсутствия данных в наборе записей.
...
Рейтинг: 0 / 0
06.11.2015, 12:32:52
    #39096438
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
результат селекта в хп
Akinaвадяпри возврате из хранимки значения found_rows
приложение воспримет его также как и результат селекта
А кто сказал, что ему нужно ВЕРНУТЬ ИЗ ХП что-то? ему нужно организовать ветвление в зависимости от наличия/отсутствия данных в наборе записей.
тогда это делается проще и быстрее
тем же count
...
Рейтинг: 0 / 0
06.11.2015, 12:35:33
    #39096444
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
результат селекта в хп
а если found_rows, после обыкновенного селекта, то зранимка вернет этот результат, пустой или нет
и будет хранимка с множественным набором данных
...
Рейтинг: 0 / 0
06.11.2015, 12:41:05
    #39096455
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
результат селекта в хп
select count(*) into @n from...
для внутреннего анализа и перехода по if
...
Рейтинг: 0 / 0
06.11.2015, 13:21:14
    #39096552
max_guest
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
результат селекта в хп
Спасибо за ответы!

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

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

Вопрос вылез т.к. я переделываю чужой сайт, а там подобные проверки, описанные в первом сообщении, на каждом шагу. Меня интересовало стоит ли их трогать или нет.
...
Рейтинг: 0 / 0
06.11.2015, 13:43:12
    #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
06.11.2015, 13:51:38
    #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
07.11.2015, 20:59:07
    #39097372
artush
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
результат селекта в хп
Akina, да, спасибо)
(я вспомнил свой логин)
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / результат селекта в хп / 15 сообщений из 15, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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