Гость
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Выход из цикла в ХП / 17 сообщений из 17, страница 1 из 1
11.07.2005, 13:10
    #33159246
asdas
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выход из цикла в ХП
Есть ли в IB функция для выхода из цикла в ХП,
аналогично функции Break в Дельфях?
Мне нужно следующее:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
for select id 
from rcl
into :id do
  for select ki from tbl_ki  /*выбрать первое значение слева от указанной даты*/
  where (client=:id) and (d<=:d1)
  order by d desc
  into :ki do
  begin
    suspend;
    BREAK;
  end

З.Ы. Делаю на IB 7.5, но на некоторых клиентах в филиалах стоит IB 6.5
...
Рейтинг: 0 / 0
11.07.2005, 14:00
    #33159385
sag494
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выход из цикла в ХП
asdasЕсть ли в IB функция для выхода из цикла в ХП,
аналогично функции Break в Дельфях?
...
З.Ы. Делаю на IB 7.5, но на некоторых клиентах в филиалах стоит IB 6.5
есть ли в IB 7.5, 6.5 что-то похожее на leave или break я не знаю. Но выход из for-select-а можно сэмулировать:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
for select id 
from rcl
into :id do
begin
  for select ki from tbl_ki  /*выбрать первое значение слева от указанной даты*/
  where (client=:id) and (d<=:d1)
  order by d desc
  into :ki do
  begin
    suspend;
    i= 1 / 0 ; /*i - переменная /
  end
when any do ki=:ki;
end
А вот по поводу "выбрать первое значение слева от указанной даты" - возникает вопрос, а нельзя ли здесь обойтись какой-нибудь аггрегатной функцией (min, max)?
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
24.09.2012, 18:12
    #37970381
Выход из цикла в ХП
А есть более правильное решение для выхода из цикла select for?
...
Рейтинг: 0 / 0
24.09.2012, 18:35
    #37970406
S.G.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выход из цикла в ХП
NONAME из ПРОШЛОГОА есть более правильное решение для выхода из цикла select for?например, сделать такой селект, который бы выбирал только необходимые записи, не больше и не меньше.

ps. я даже не припомню, чтобы пользовался каким-то специальным выходом.
или for select, или while.
...
Рейтинг: 0 / 0
25.09.2012, 09:53
    #37970849
Arioch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выход из цикла в ХП
заведи переменную :exit_flag

и делай select... where (:exit_flag=0) and...

а в цикле когда надо выставишь флаг выхода

Вообще на ibase.ru был давно FAQ и там были методики прерывания select'a до того как появились SELECT ... ROWS и SELECT FIRST n SKIP m
...
Рейтинг: 0 / 0
25.09.2012, 11:00
    #37970983
DarkMaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выход из цикла в ХП
Arioch,

Читайте про LEAVE (с FB 2.0)...
...
Рейтинг: 0 / 0
25.09.2012, 11:08
    #37971007
Arioch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выход из цикла в ХП
я знаю, но эта тема не про FB
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
17.10.2016, 17:40
    #39328450
Sia-Ori1
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выход из цикла в ХП
Arioch,
На IB2007 изменение флага в теле цикла никак не влияет на прерывание селекта. Условие проверяется один раз, при старте, и все.
Есть какие либо мысли по поводу прерывания выборки в for select ... do ... suspend?
...
Рейтинг: 0 / 0
17.10.2016, 17:46
    #39328452
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выход из цикла в ХП
хто тут?!
...
Рейтинг: 0 / 0
18.10.2016, 16:18
    #39329104
Sia-Ori1
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выход из цикла в ХП
нашёл! оказывается, в 2007 оно уже есть, а мне казалось, что только в 2009
https://ru.wikipedia.org/wiki/Select_(SQL)#.D0.9E.D0.B3.D1.80.D0.B0.D0.BD.D0.B8.D1.87.D0.B5.D0.BD.D0.B8.D0.B5_.D0.B2.D0.BE.D0.B7.D0.B2.D1.80.D0.B0.D1.89.D0.B0.D0.B5.D0.BC.D1.8B.D1.85_.D1.81.D1.82.D1.80.D0.BE.D0.BA
-----
SELECT * FROM [T] ROWS 10
...
Рейтинг: 0 / 0
18.10.2016, 16:41
    #39329133
rdb_dev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выход из цикла в ХП
Sia-Ori1, Вау, круто!
...
Рейтинг: 0 / 0
18.10.2016, 17:02
    #39329159
Sia-Ori1
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выход из цикла в ХП
Не всем же в высоких материях витать :)
Да и народ тут в основном на FB.
...
Рейтинг: 0 / 0
18.10.2016, 18:51
    #39329254
WildSery
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выход из цикла в ХП
Sia-Ori1,

Особенно если в голове каша.
ROWS это не прерывание выборки, а непрерывная выборка заранее известного числа записей.
...
Рейтинг: 0 / 0
18.10.2016, 18:59
    #39329259
kdv
kdv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выход из цикла в ХП
Sia-Ori1нашёл! оказывается, в 2007 оно уже есть, а мне казалось, что только в 2009
ссылка ваша хреновая. row_number, как и оконных функций, в InterBase нет, никакой версии.
ограничитель ROWS для ORDER BY (! и ни для чего другого) появился действительно в InterBase 2007.
...
Рейтинг: 0 / 0
18.10.2016, 19:18
    #39329274
Sia-Ori1
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выход из цикла в ХП
Всем спасибо за комментарии.
Альтернативных вариантов прервать цикл for select ... suspend не нашёл.
...
Рейтинг: 0 / 0
19.10.2016, 09:39
    #39329555
WildSery
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выход из цикла в ХП
Sia-Ori1,

А курсоры (declare ... as cursor ...) есть в IB2007?
...
Рейтинг: 0 / 0
20.10.2016, 13:34
    #39330594
Arioch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выход из цикла в ХП
Sia-Ori1,

попробуй сфлагом, но только флаг не на локлаьной переменной, а на генераторе

....но сам понимаешь и принципиальное ограничение такого использования генератора
...
Рейтинг: 0 / 0
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Выход из цикла в ХП / 17 сообщений из 17, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]