Текущее время: Пн, июл 28 2025, 02:31

Часовой пояс: 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 часа


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

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

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