Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Вывод значений из процедуры
 
 автор: Hatred   (13.06.2007 в 14:47)   письмо автору
 
 

На 467 странице самоучителя MySQL 5 приведена процедура, демонстрирующая области видимости переменных. Вот её чуть-чуть модифицированный вариант:


CREATE PROCEDURE declare_var()
outer_p: BEGIN
  DECLARE var1 TINYTEXT DEFAULT 'внешняя переменная';
  inner_p: BEGIN
    DECLARE var2 TINYTEXT DEFAULT 'внутренняя переменная';
    SELECT var2;
  END inner_p;
  SELECT var1;
END outer_p;

CALL declare_var();


В результате выводится одна строчка:


+-----------------------------------+
|var2                                         |
+-----------------------------------+
|внутренняя переменная  |                  |
+-----------------------------------+


А по учебнику (да и по логике) должны выводиться две строчки. В чём же дело?

   
 
 автор: cheops   (13.06.2007 в 18:37)   письмо автору
 
   для: Hatred   (13.06.2007 в 14:47)
 

А у вас какая версия MySQL? Сейчас попробовал на 5.0.26 - выводит две результирующие таблицы. Запрос выполняете в консольном клиенте mysql или обрабатываете из PHP?

   
 
 автор: Hatred   (13.06.2007 в 18:46)   письмо автору
 
   для: cheops   (13.06.2007 в 18:37)
 

5.1.18-beta-community-nt-debug
MySQL Front 3.2, EMS SQL Manager 2005

P.S. Хм... А Community Server - это что? Кажется, не то скачал.
Поставил версию 5.0.6-beta-nt, которая шла к книге - результат тот же.

Процедура тоже не работает корректно:


CREATE PROCEDURE `tester`()
BEGIN
  SELECT*FROM catalogs;
  SELECT COUNT(*) FROM catalogs;
END;


Выполняется только первый запрос.

   
 
 автор: cheops   (13.06.2007 в 20:17)   письмо автору
 
   для: Hatred   (13.06.2007 в 18:46)
 

Скорее всего MySQL Front 3.2 не может корректно отобразить результаты...

PS Всё нормально Community Server означает, что у вас свободная GPL-версия MySQL-сервера, а не коммерческая лицензия.

   
 
 автор: Hatred   (13.06.2007 в 20:46)   письмо автору
 
   для: cheops   (13.06.2007 в 20:17)
 

Скачал EMS MySQL Manager 2007. В нём то же самое.

Эта процедура возвращает одну строчку, вместо трёх:


CREATE PROCEDURE `NOW5`()
BEGIN
  DECLARE i int DEFAULT 3;
  WHILE i>0 DO
    SELECT NOW();
    SET i=i-1;
  END WHILE;
END;


Мне не удаётся запустить консольный клиент MySQL. Окно закрывается при вводе mysql -u root -p. В PATH устанавливал при установке MySQL.

   
 
 автор: cheops   (14.06.2007 в 10:03)   письмо автору
 
   для: Hatred   (13.06.2007 в 20:46)
 

>Мне не удаётся запустить консольный клиент MySQL.
>Окно закрывается при вводе mysql -u root -p.
Как запускаете командную строку? Через Пуск->Программы->Стандартные->Командная строка?

   
 
 автор: Hatred   (14.06.2007 в 19:31)   письмо автору
 
   для: cheops   (14.06.2007 в 10:03)
 

MySQL Front и даже EMS MySQL Manager неправильно обрабатывают результаты запроса.

Камандная строка не запускалась потому, что при установке устанавливал по умолчинаю кодировку cp2151, а не latin1, как предлагалось. Поэтому при запуску командной строки MySQL с параметрами у сеня выводилось сообщение об ошибке компиляции кодировке из какого-то xml файла. Пришлось отказаться от утсановления этой кодировки для баз по умолчанию.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования