Использование переменной в запросе в процедуре

Запросы, планы, оптимизация запросов, ...

Модераторы: kdv, CyberMax

Ответить
Sparton
Сообщения: 28
Зарегистрирован: 22 фев 2007, 10:38

Использование переменной в запросе в процедуре

Сообщение Sparton » 06 сен 2007, 13:44

Такой вот вопрос, имею запрос в процедуре.

Код: Выделить всё

select first 10 skip 0 id from news
Входящий пар-р в процедуру kol - требуемое кол-во новостей. Так вот как правильно подставить переменную kol в сам запрос

Код: Выделить всё

select first kol skip 0 id from news
- не работает...

mdfv
Сообщения: 119
Зарегистрирован: 23 май 2006, 15:53

Сообщение mdfv » 06 сен 2007, 14:10

Параметры обычно с двоеточием пишут.
:kol

Sparton
Сообщения: 28
Зарегистрирован: 22 фев 2007, 10:38

Сообщение Sparton » 06 сен 2007, 14:18

mdfv писал(а):Параметры обычно с двоеточием пишут.
:kol
Да, пробовал... Тоже не идет... Сообщает

Код: Выделить всё

Dynamic SQL Error.
SQL error code = -104.
Token unknown - line 12, char 18.
:.
Последний раз редактировалось Sparton 06 сен 2007, 14:23, всего редактировалось 1 раз.

Merlin
Динозавр IB/FB
Сообщения: 1502
Зарегистрирован: 27 окт 2004, 11:44

Сообщение Merlin » 06 сен 2007, 14:20

В скобки заверни.

dragon_art
Сообщения: 18
Зарегистрирован: 20 сен 2006, 09:18

Сообщение dragon_art » 06 сен 2007, 14:23

интересно, а INTO тут чтоль не трэба? :?

Sparton
Сообщения: 28
Зарегистрирован: 22 фев 2007, 10:38

Сообщение Sparton » 06 сен 2007, 14:47

dragon писал(а):интересно, а INTO тут чтоль не трэба? :?
Трэба, не до конца написал...

А вот со скобками в точку. Буду знать, благодарю.

WildSery
Заслуженный разработчик
Сообщения: 1738
Зарегистрирован: 05 июн 2006, 16:19

Сообщение WildSery » 06 сен 2007, 15:26

Чтоб уж до конца прояснить ситуацию с синтаксисом, добавлю, что если в FISRT или SKIP используется результат подзапроса, то заворачивать нужно в двойные скобки (первые сам подзапрос, вторые для подстановки значения).
Например.

Код: Выделить всё

select first ((select count(1)/2 from rdb$relations)) * from rdb$relations;

Ответить