SQLinfo.ru - Все о MySQL

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

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

Вы не зашли.

#1 14.10.2009 21:44:35

vlad275
Завсегдатай
Зарегистрирован: 08.10.2009
Сообщений: 25

Вы не знаете почему процедура вызванная в MySQL Query Browser возвращает NULL, NULL?

Вы не знаете почему процедура вызванная в MySQL Query Browser возвращает NULL, NULL?
В PHPMyAdmin возващает 0 и "+"d
В таблице нет ни одного NULL. Там одна строка данных. Ниже приведены 2 скриншота. В колонках 0 и "+"
http://pic.ipicture.ru/uploads/091014/IK65YybHL2.png

SP:

Код:

DELIMITER $$

DROP PROCEDURE IF EXISTS `p4` $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `p4`()
    SQL SECURITY INVOKER
    COMMENT 'Example'
BEGIN
 DECLARE intID INT(2);
 DECLARE varcharStatus VARCHAR(255);
 DECLARE cur1 CURSOR FOR SELECT intID,varcharStatus FROM tCandidates;

 OPEN cur1;

 FETCH  FROM cur1 INTO intID,varcharStatus;

  CREATE TABLE tTemp6 (intID  INT(2), varcharStatus VARCHAR(255));
  INSERT INTO tTemp6 VALUES (intID, varcharStatus);

 SELECT intID, varcharStatus FROM tTemp6;

 CLOSE cur1;
END $$

DELIMITER ;

Неактивен

 

#2 14.10.2009 22:17:40

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

Re: Вы не знаете почему процедура вызванная в MySQL Query Browser возвращает NULL, NULL?

Потому что у вас перекрываются названия локальных переменных и имен столбцов в таблице.

Общее правило здесь такое:
1)Локальные переменные имеют приоритет над параметрами процедуры и именами столбцов
2)Локальные переменные во внутренних блоках имеют приоритет над определенными во внешних
3)Параметры процедуры имеют приоритет над именами столбцов.


Подробнее обсуждение этой темы с примерами см. http://sqlinfo.ru/forum/viewtopic.php?id=363 начиная с третьего поста.

Неактивен

 

#3 14.10.2009 23:53:26

vlad275
Завсегдатай
Зарегистрирован: 08.10.2009
Сообщений: 25

Re: Вы не знаете почему процедура вызванная в MySQL Query Browser возвращает NULL, NULL?

Спасибо большое!
Какой префиксы Вы порекомендуете для переменных хранимой переменной? Может "spv_" ?

Неактивен

 

#4 14.10.2009 23:56:55

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

Re: Вы не знаете почему процедура вызванная в MySQL Query Browser возвращает NULL, NULL?

Дело вкуса. Главное, чтобы вы (и те кто будет работать с этим кодом кроме вас) не путались.

Неактивен

 

#5 15.10.2009 09:43:50

vlad275
Завсегдатай
Зарегистрирован: 08.10.2009
Сообщений: 25

Re: Вы не знаете почему процедура вызванная в MySQL Query Browser возвращает NULL, NULL?

Стоит ли в начале хранимой процедуры указывать
SET TRANSACTION ISOLATION
LEVEL SERIALIZABLE
?

Неактивен

 

#6 15.10.2009 13:30:00

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Вы не знаете почему процедура вызванная в MySQL Query Browser возвращает NULL, NULL?

Зависит от того, что Вы хотите от этого получить. К слову сказать, этот уровень
изоляции не работает в 5.1.

Неактивен

 

#7 15.10.2009 23:29:00

vlad275
Завсегдатай
Зарегистрирован: 08.10.2009
Сообщений: 25

Re: Вы не знаете почему процедура вызванная в MySQL Query Browser возвращает NULL, NULL?

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

Неактивен

 

#8 16.10.2009 14:45:08

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Вы не знаете почему процедура вызванная в MySQL Query Browser возвращает NULL, NULL?

Ну, видимо, REPEATABLE_READ. В 5.0, кстати, SERIALIZABLE работает.

Неактивен

 

Board footer

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