SQLinfo.ru - Все о MySQL

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

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

Вы не зашли.

#1 04.06.2008 14:21:12

Igor Panshin
Завсегдатай
Зарегистрирован: 04.06.2008
Сообщений: 62

DECLARE, SELECT не понимает перечисления разных типов

Скажем
DECLARE a,b,c int; -- ok
DECLARE a int, b char(255); -- not ok
Аналогично с SELECT, если идет присвоение переменным

Если я ставлю DECLARE не в начале, а после ряда предложений SELECT ...., то компиляция не проходит

Почему?

Неактивен

 

#2 04.06.2008 15:28:06

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

Re: DECLARE, SELECT не понимает перечисления разных типов

Igor Panshin написал:

Скажем
DECLARE a,b,c int; -- ok
DECLARE a int, b char(255); -- not ok
Аналогично с SELECT, если идет присвоение переменным

Нужно:
DECLARE a,c int;
DECLARE b char(255);

Igor Panshin написал:

Если я ставлю DECLARE не в начале, а после ряда предложений SELECT ...., то компиляция не проходит
Почему?

Локальные переменные должны быть явно декларированы до их использования.
Сначала идет декларирование, причем в строго определенном порядке: variables, conditions, cursors, handlers.

Неактивен

 

#3 04.06.2008 15:31:24

EugeneTM
Гуру
Зарегистрирован: 11.04.2008
Сообщений: 89

Re: DECLARE, SELECT не понимает перечисления разных типов

Igor Panshin написал:

Скажем
DECLARE a,b,c int; -- ok
DECLARE a int, b char(255); -- not ok
Аналогично с SELECT, если идет присвоение переменным

Если я ставлю DECLARE не в начале, а после ряда предложений SELECT ...., то компиляция не проходит

Почему?

Что мешает сделать DECLARE столько раз , сколько типов необходимо задать?

Компиляция и не должна пройти
http://dev.mysql.com/doc/refman/5.1/en/declare.html

Неактивен

 

#4 05.06.2008 09:55:17

Igor Panshin
Завсегдатай
Зарегистрирован: 04.06.2008
Сообщений: 62

Re: DECLARE, SELECT не понимает перечисления разных типов

На самом деле, конечно ничего не мешает, если варишься в собственном соку. Однако, когда выполняешь конвертацию инородных для Mysql SQL скриптов в mysql скрипт, то возникают вопросы типа почему. Поскольку я с детства почемучка, то я и спрашиваю. Насколько сложно добавить скажем в следующей версии движка Mysql возможность разбора
DECLARE , with a list,... and SELECT , with a list, ... ?
Или я обращаюсь не по адресу и разработчиков здесь нет?

Неактивен

 

#5 05.06.2008 10:01:16

Igor Panshin
Завсегдатай
Зарегистрирован: 04.06.2008
Сообщений: 62

Re: DECLARE, SELECT не понимает перечисления разных типов

Локальные переменные должны быть явно декларированы до их использования.

Это понятно. Вопрос в том, что как только я вставляю DECLARE не в начале, а контекст тела процедуры
типа
IF IncludeDeleted = 0
THEN
SET Step=1;
DECLARE ss int;
SET ss=1;
END IF;
так сразу же прилетает ошибка
You have an error in your SQL syntax; check ...

Неактивен

 

#6 05.06.2008 10:24:22

EugeneTM
Гуру
Зарегистрирован: 11.04.2008
Сообщений: 89

Re: DECLARE, SELECT не понимает перечисления разных типов

Igor Panshin написал:

Локальные переменные должны быть явно декларированы до их использования.

Это понятно. Вопрос в том, что как только я вставляю DECLARE не в начале, а контекст тела процедуры
типа
IF IncludeDeleted = 0
THEN
SET Step=1;
DECLARE ss int;
SET ss=1;
END IF;
так сразу же прилетает ошибка
You have an error in your SQL syntax; check ...

Там очень мало текста
http://dev.mysql.com/doc/refman/5.1/en/declare.html

DECLARE is allowed only inside a BEGIN ... END compound statement and must be at its start,  before any other statements.

Неактивен

 

#7 05.06.2008 10:35:58

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3878

Re: DECLARE, SELECT не понимает перечисления разных типов

Igor Panshin написал:

На самом деле, конечно ничего не мешает, если варишься в собственном соку. Однако, когда выполняешь конвертацию инородных для Mysql SQL скриптов в mysql скрипт, то возникают вопросы типа почему. Поскольку я с детства почемучка, то я и спрашиваю. Насколько сложно добавить скажем в следующей версии движка Mysql возможность разбора
DECLARE , with a list,... and SELECT , with a list, ... ?
Или я обращаюсь не по адресу и разработчиков здесь нет?

Среди создателей форума SQLinfo нет разработчиков MySQL, мы скорее независимые консультанты по MySQL. Ничего конечно не мешает разработчикам MySQL AB/Sun читать форум. Если хотите донести мысль до разработчиков, напишите лучше на http://lists.mysql.com/ (по английски)

На такой вопрос разработчики вряд ли Вам ответят определенно. Реализовать это несложно, но у хранимых процедур сейчас масса ограничений, которые несложно устранить. Понятно, что в планах работа над этим заложена, но конкретную даты и версию, в которой это произойдет вряд ли кто-то назовет.

Неактивен

 

#8 05.06.2008 10:50:59

Igor Panshin
Завсегдатай
Зарегистрирован: 04.06.2008
Сообщений: 62

Re: DECLARE, SELECT не понимает перечисления разных типов

Да, спасибо. Больше не буду задавать такие глупые вопросы.

Неактивен

 

#9 05.06.2008 11:46:49

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3878

Re: DECLARE, SELECT не понимает перечисления разных типов

Igor Panshin написал:

Да, спасибо. Больше не буду задавать такие глупые вопросы.

Задавать можете, тем более, что часть планов MySQL AB известна

Неактивен

 

Board footer

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