![]() |
Задавайте вопросы, мы ответим
Вы не зашли.
Страниц: 1
Вы не знаете почему процедура вызванная в MySQL Query Browser возвращает NULL, NULL?
В PHPMyAdmin возващает 0 и "+"d
В таблице нет ни одного NULL. Там одна строка данных. Ниже приведены 2 скриншота. В колонках 0 и "+"
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 ;Неактивен

Потому что у вас перекрываются названия локальных переменных и имен столбцов в таблице.
Общее правило здесь такое:
1)Локальные переменные имеют приоритет над параметрами процедуры и именами столбцов
2)Локальные переменные во внутренних блоках имеют приоритет над определенными во внешних
3)Параметры процедуры имеют приоритет над именами столбцов.
Подробнее обсуждение этой темы с примерами см. http://sqlinfo.ru/forum/viewtopic.php?id=363 начиная с третьего поста.
Неактивен
Спасибо большое!
Какой префиксы Вы порекомендуете для переменных хранимой переменной? Может "spv_" ?
Неактивен

Дело вкуса. Главное, чтобы вы (и те кто будет работать с этим кодом кроме вас) не путались.
Неактивен
Стоит ли в начале хранимой процедуры указывать
SET TRANSACTION ISOLATION
LEVEL SERIALIZABLE
?
Неактивен

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

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