Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Использование переменной в процедуре, LIMIT 
V
    Опции темы
del3d
Дата 13.3.2008, 17:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 128
Регистрация: 13.11.2007

Репутация: нет
Всего: нет



Всем привет!

Пишу хранимую процедуру:
Код

CREATE PROCEDURE my_proc(IN n INT)
BEGIN
SELECT * FROM my_tab LIMIT n;
END //

она не создается:
Код

...right syntax to use near 'n; end' at line 1

Вот так как описано ниже - работает:
Код

CREATE PROCEDURE my_proc(IN n INT)
BEGIN
SELECT * FROM my_tab LIMIT 3;
END //

Но мне надо, передать это в переменной..
Почему нельзя воспользоваться переменной в LIMIT'е?

PM MAIL   Вверх
skyboy
Дата 13.3.2008, 18:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 41
Всего: 260



вот что я вытянул из секретного справочника:
Цитата

The LIMIT clause can be used to constrain the number of rows returned by the SELECT statement. LIMIT takes one or two numeric arguments, which must both be non-negative integer constants (except when using prepared statements).
Секция Limit может быть использована для ограничения количества записей, возвращаемых конструкцией SELECT. LIMIT принимает два аргумента-числа, каждый из которых должен быть неотрицательной целой константой(кроме как при использовании к ХП)

Цитата

For prepared statements, you can use placeholders (supported as of MySQL version 5.0.7). The following statements will return one row from the tbl table
Для хранимых процедур, вы можете использовать подстановки(начиная с версии 5.0.7). последующий код вернет одну строку из таблицы tbl: 
Код

SET @a=1;
PREPARE STMT FROM 'SELECT * FROM tbl LIMIT ?';
EXECUTE STMT USING @a;

The following statements will return the second to sixth row from the tbl table
Следующий код вернет со 2 по 6 записи из таблицы tbl: 
Код

SET @skip=1; SET @numrows=5;
PREPARE STMT FROM 'SELECT * FROM tbl LIMIT ?, ?';
EXECUTE STMT USING @skip, @numrows;

PM MAIL   Вверх
del3d
Дата 13.3.2008, 20:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 128
Регистрация: 13.11.2007

Репутация: нет
Всего: нет



Спасибо большое.. я правда ничего не понял.. 
Код

PREPARE STMT FROM 'SELECT * FROM tbl LIMIT ?';
EXECUTE STMT USING @a;

..но все воркает

Буду разбираться с подстановками..
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MySQL | Следующая тема »


 




[ Время генерации скрипта: 0.0428 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.