Текущее время: Пн, авг 04 2025, 21:35

Часовой пояс: UTC + 3 часа


Правила форума


ВНИМАНИЕ!

Вопросы по SAP Query и Quick View - сюда



Начать новую тему Ответить на тему  [ Сообщений: 10 ] 
Автор Сообщение
 Заголовок сообщения: Прерывание цикла SELECT
СообщениеДобавлено: Вт, ноя 11 2008, 16:50 
Специалист
Специалист

Зарегистрирован:
Чт, сен 04 2008, 12:40
Сообщения: 119
Откуда: Пермь
Пол: Мужской
Добрый вечер!
Каким образом можно прервать цикл SELECT при превышении определенного количества выбранных записей? Необходимо чтобы после прерывания программа продолжила выполняться.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, ноя 11 2008, 16:59 
Модератор
Модератор
Аватара пользователя

Зарегистрирован:
Пт, июн 16 2006, 00:43
Сообщения: 1686
Откуда: Москва <-> Красноярск
Пол: Мужской
Метод правильный:
Code:
SELECT UP TO n ROWS

Метод кривой:
Code:
SELECT.

  IF sy-dbcnt EQ n. EXIT. ENDIF.

ENDSELECT.


UPD: Ну и да, кнопка F1 на SELECT в редакторе решает эти вопросы значительно быстрее форума.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, ноя 11 2008, 17:02 
Старший специалист
Старший специалист

Зарегистрирован:
Пн, окт 20 2008, 10:29
Сообщения: 339
Откуда: Мюнхен
Пол: Мужской
Жаль чаще приходится кривым способом... когда условие не по количеству выборок


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, ноя 11 2008, 17:16 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Сб, сен 25 2004, 16:30
Сообщения: 1368
Откуда: Москва
Пол: Мужской
Есть еще OPEN CURSOR и FETCH для чтения порциями. За подробностями в хэлп плиз :)

_________________
С уважением, Сергей Королев


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, ноя 11 2008, 21:36 
Специалист
Специалист

Зарегистрирован:
Чт, июн 21 2007, 09:14
Сообщения: 166
Откуда: Москва
Пол: Мужской
Сергей Королев написал:
Есть еще OPEN CURSOR и FETCH для чтения порциями. За подробностями в хэлп плиз :)


вы предлагаете что-то типа того:

Code:
DATA: dbcur1 TYPE cursor,
      it type standard table of t000.

open cursor dbcur1 for
select * from t000.

do 2 times.
  FETCH NEXT CURSOR dbcur1 appending table it PACKAGE SIZE 2.
enddo.

?

Наверное, полезно, если мы хотим считать пачку записей с какой-то определенной позиции...


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, ноя 11 2008, 21:57 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Сб, сен 25 2004, 16:30
Сообщения: 1368
Откуда: Москва
Пол: Мужской
У меня есть подозрение, что
Code:
SELECT...
  IF sy-dbcnt...
    EXIT.
  ENDIF.
ENDSELECT.

хуже, чем сочетание OPEN CURSOR и FETCH с точки зрения загрузки СУБД.

_________________
С уважением, Сергей Королев


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, ноя 11 2008, 23:23 
Модератор
Модератор
Аватара пользователя

Зарегистрирован:
Пт, июн 16 2006, 00:43
Сообщения: 1686
Откуда: Москва <-> Красноярск
Пол: Мужской
Вообще с точки зрения СУБД операции идентичны. И в том и в другом случае будет открыт курсор и будут фетчится записи.
Единственная разница в том, что в случае open cursor и fetch мы можем несколько повлиять на процесс.

Цитата:
Наверное, полезно, если мы хотим считать пачку записей с какой-то определенной позиции...


В реляционных СУБД нет навигации. И нет порядка записей. Т.е. понятие позиция лишено смысла...


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, ноя 12 2008, 10:04 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Сб, сен 25 2004, 16:30
Сообщения: 1368
Откуда: Москва
Пол: Мужской
Пономарев Артем написал:
Вообще с точки зрения СУБД операции идентичны.
Н-да, был неправ, СУБД лучше не станет.

_________________
С уважением, Сергей Королев


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, ноя 12 2008, 10:21 
Специалист
Специалист

Зарегистрирован:
Чт, июн 21 2007, 09:14
Сообщения: 166
Откуда: Москва
Пол: Мужской
Пономарев Артем написал:
В реляционных СУБД нет навигации. И нет порядка записей. Т.е. понятие позиция лишено смысла...

Я имел в виду фетчим пачками, а добавляем во внутр. таблицу не все записи. т.е. "позиция" - это номер записи в наборе выбранных записей, а не в самой таблице БД :)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, ноя 12 2008, 10:41 
Специалист
Специалист

Зарегистрирован:
Чт, сен 04 2008, 12:40
Сообщения: 119
Откуда: Пермь
Пол: Мужской
Спасибо народ, то что надо! :D


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 10 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: Mixail167


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB