powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Выход из цикла в ХП
17 сообщений из 17, страница 1 из 1
Выход из цикла в ХП
    #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
Выход из цикла в ХП
    #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
Период между сообщениями больше года.
Выход из цикла в ХП
    #37970381
А есть более правильное решение для выхода из цикла select for?
...
Рейтинг: 0 / 0
Выход из цикла в ХП
    #37970406
Фотография S.G.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NONAME из ПРОШЛОГОА есть более правильное решение для выхода из цикла select for?например, сделать такой селект, который бы выбирал только необходимые записи, не больше и не меньше.

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

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

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

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

Читайте про LEAVE (с FB 2.0)...
...
Рейтинг: 0 / 0
Выход из цикла в ХП
    #37971007
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я знаю, но эта тема не про FB
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Выход из цикла в ХП
    #39328450
Sia-Ori1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Arioch,
На IB2007 изменение флага в теле цикла никак не влияет на прерывание селекта. Условие проверяется один раз, при старте, и все.
Есть какие либо мысли по поводу прерывания выборки в for select ... do ... suspend?
...
Рейтинг: 0 / 0
Выход из цикла в ХП
    #39328452
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
хто тут?!
...
Рейтинг: 0 / 0
Выход из цикла в ХП
    #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
Выход из цикла в ХП
    #39329133
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sia-Ori1, Вау, круто!
...
Рейтинг: 0 / 0
Выход из цикла в ХП
    #39329159
Sia-Ori1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не всем же в высоких материях витать :)
Да и народ тут в основном на FB.
...
Рейтинг: 0 / 0
Выход из цикла в ХП
    #39329254
WildSery
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sia-Ori1,

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

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

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

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


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