SQLinfo.ru - Все о MySQL

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

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

Вы не зашли.

#1 14.07.2008 15:30:20

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

Почему?

Пишу 1:

CREATE TEMPORARY TABLE `IDs` ( `RowID` NCHAR(38) PRIMARY KEY, `Level` int );
  DECLARE RowCursor CURSOR FOR SELECT `RowID` FROM `IDs` ;

получаю

  You have an error in your SQL syntax

Пишу 2:

DECLARE RowCursor CURSOR FOR SELECT `RowID` FROM `IDs` ;
CREATE TEMPORARY TABLE `IDs` ( `RowID` NCHAR(38) PRIMARY KEY, `Level` int );

получаю
ok

почему первое предложение выдает ошибку, а второе нет? Логичнее было бы предположить наоборот так как объявляется временная таблица, а потом объявляется курсор по ее содержимому, а не наоборот.  Если же ситуация 1 и 2 конгруэнтны между собой, то почему выдается ошибка?

Неактивен

 

#2 14.07.2008 19:54:07

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

Re: Почему?

Все объявления (DECLARE) переменных должны быть в начале процедуры, до любых
действий. Как следствие, Вы не можете объявить курсор после создания (действия)
временной таблицы.

С другой стороны, это не должно вызывать проблем - ведь Вы обращаетесь за данными
только в момент открытия курсора.

Неактивен

 

Board footer

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