SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 24.11.2011 15:39:25

simple
Активист
Зарегистрирован: 25.11.2010
Сообщений: 168

Warning 1329 в mysql

Всем привет.
Проблема в следующем:
Делаю выборку в ХП из таблицы в переменные с помощью метода INTO

SELECT a,b,c INTO var_a,var_b,var_c FROM table WHERE d=1;

если в таблице не оказывается  строк по заданному условию то mysql выдает:
Warning 1329 No data - zero rows fetched, selected, or processed
т.е данных нет, вот как мне в такой ситуации сделать чтобы данный варнинг не появлялся в результате выборки?
Пробовал в разных комбинациях IS NULL и IS NOT NULL. не помогает, подскажите плиз...

PS. конечно можно использовать неопределенные переменные типо такого
SELECT @var_a:=a,@var_b:=b,@var_c:=c FROM table WHERE d=1;
 

тогда проблема решается в одни ворота но мне интересно именно первый вариант с переменными и способ решение данной проблемы.

Неактивен

 

#2 24.11.2011 16:43:17

simple
Активист
Зарегистрирован: 25.11.2010
Сообщений: 168

Re: Warning 1329 в mysql

а какие переменный лучше использовать в ХП? которые определены через DECLARE или же локальные с префиксом @?

Неактивен

 

#3 25.11.2011 02:22:35

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5827

Re: Warning 1329 в mysql

А в чем проблема? Warning это не error, он работу процедуры не прерывает и ни на что не влияет.

Локальные переменные это те которые определены через DECLARE, а с префиксом @ как раз глобальные (иначе их ещё называют пользовательские (user variables)). Соответственно, в зависимости от задачи - если переменная нужна только внутри процедуры, то через declare, иначе с префиксом.

Неактивен

 

#4 25.11.2011 02:38:38

simple
Активист
Зарегистрирован: 25.11.2010
Сообщений: 168

Re: Warning 1329 в mysql

Спасибо, т.е на warningi вообще внимания не надо обращать что ли?
А не приведет ли это в дальнейшем к какой нибудь ошибки или дыре?

Неактивен

 

#5 25.11.2011 16:47:40

simple
Активист
Зарегистрирован: 25.11.2010
Сообщений: 168

Re: Warning 1329 в mysql

vasya написал:

А в чем проблема? Warning это не error, он работу процедуры не прерывает и ни на что не влияет.

Люди говорят что они журнал логов будут потом забивать эти варнинги всякие и лучше их избегать

Нашел для себе решения следующее:


SELECT COUNT(*),a,b,c INTO checking,var_a,var_b,var_c FROM table WHERE id=1 LIMIT 1;
IF(!checking) THEN  . . . . . . . . END IF;
 


Теперь все работает как надо

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson