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

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 10 ] 
Автор Сообщение
 Заголовок сообщения: Кошерно ли использовать SELECT в SELECT-е?
СообщениеДобавлено: Вт, фев 19 2008, 16:16 
Менеджер
Менеджер
Аватара пользователя

Зарегистрирован:
Вс, сен 02 2007, 15:10
Сообщения: 670
Откуда: Moscow
Если да, то есть ли все-таки какие-либо противопоказания?
Прим. Речь о коде типа
Code:
SELECT ...
    SELECT SINGLE ...
...
    .
ENDSELECT.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Кошерно ли использовать SELECT в SELECT-е?
СообщениеДобавлено: Вт, фев 19 2008, 16:25 
Гуру-эксперт
Гуру-эксперт

Зарегистрирован:
Вт, сен 07 2004, 17:47
Сообщения: 2988
Моха написал(а):
Если да, то есть ли все-таки какие-либо противопоказания?
Прим. Речь о коде типа
Code:
SELECT ...
    SELECT SINGLE ...
...
    .
ENDSELECT.

Основное противопоказание - это падение производительности.
Но как и все общие положения - нужно аналиизировать конкретную ситуацию и пр.

_________________
"После" - не значит "вследствие"


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Кошерно ли использовать SELECT в SELECT-е?
СообщениеДобавлено: Вт, фев 19 2008, 17:08 
Менеджер
Менеджер
Аватара пользователя

Зарегистрирован:
Вс, сен 02 2007, 15:10
Сообщения: 670
Откуда: Moscow
sy-uname
Спасибо.


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

Зарегистрирован:
Чт, июн 16 2005, 10:29
Сообщения: 336
Откуда: Минск->Москва
Пол: Мужской
Все зависит от выборки, по ключу (индексу) или нет. На малых объемах данных и выборках по ключу разница будет несущественной.
Этому можно убедиться в примерах производительности от SAP.
Вот при сложных выборках стоит анализировать на какой из серверов переложить нагрузку (БД или Application), чтобы размер таблицы не выел все ресурсы. В таких случаях применительна конструкция
Code:
SELECT <field_names>
   FROM <DDIC_table>
   INTO CORRESPONDING FIELDS OF TABLE <itab>
   PACKAGE SIZE <size>
   WHERE ...

ENDSELECT.

Смешанная конструкция, делает выборки в таблицу определенного размера, сокращая количество обращений к БД и гарантирует не выедание ресурсов.


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

Зарегистрирован:
Ср, сен 22 2004, 08:42
Сообщения: 1079
Откуда: Москва
Пол: Мужской
2 Моха
Такую конструкцию при определенных обстоятельствах трудно проходить отладчиком, падает в дамп.


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

Зарегистрирован:
Вс, сен 02 2007, 15:10
Сообщения: 670
Откуда: Moscow
Всем спасибо. Мои сомнения подтвердились. Сделал без вложенных селектов, хотя потратил больше времени.
Прим. Пока не разобрался с PACKAGE SIZE.

_________________
Если кризис ведет к очищению, то удар битой по голове должен вести к просветлению. (с) Я.


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

Зарегистрирован:
Чт, июн 16 2005, 10:29
Сообщения: 336
Откуда: Минск->Москва
Пол: Мужской
А что в PACKAGE SIZE непрозрачного?
Идет цикл между SELECT..ENDSELECT, на каждой итерации в таблицу данных будет передаваться количество строк, указанное в PACKAGE SIZE.
Цитата:
If you specify the PACKAGE SIZE addition, all lines of the result set for SELECT are processed in a loop, which must be closed with ENDSELECT. The lines are inserted in the internal table itab in packages of n lines. n must be a type i data object that contains the number of lines. If the value of n is smaller than 0, an exception that cannot be handled occurs. If n is equal to 0, all lines of the result set are inserted in the internal table itab.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, фев 21 2008, 15:41 
Начинающий
Начинающий

Зарегистрирован:
Вт, фев 12 2008, 10:56
Сообщения: 8
Он написал:
А что в PACKAGE SIZE непрозрачного?
Идет цикл между SELECT..ENDSELECT, на каждой итерации в таблицу данных будет передаваться количество строк, указанное в PACKAGE SIZE.
Цитата:
If you specify the PACKAGE SIZE addition, all lines of the result set for SELECT are processed in a loop, which must be closed with ENDSELECT. The lines are inserted in the internal table itab in packages of n lines. n must be a type i data object that contains the number of lines. If the value of n is smaller than 0, an exception that cannot be handled occurs. If n is equal to 0, all lines of the result set are inserted in the internal table itab.


лично для меня сейчас не совсем прозрачно, почему у меня он не идёт..
Цитата:
The addition "PACKAGE SIZE n" only makes sense with "INTO TABLE itab"
or "APPENDING TABLE itab". sense with "INTO TABLE itab" or "APPENDING
TABLE itab". sense with "INTO TABLE itab" or "APPENDING TABLE itab".
itab". operator.

и всё равно потом не хочет. эх.


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

Зарегистрирован:
Ср, мар 02 2005, 20:19
Сообщения: 133
Откуда: Moscow
Так там же все четко написано - только для SELECT ... ENDSELECT при выборе во внутр.таблицу.
Т.е., например, так пройдет нормально:
Code:
    SELECT * FROM drap INTO TABLE lt_drap
   PACKAGE SIZE 10.
* .................
    ENDSELECT.

_________________
Монарх - это серъезно (с) "Классик"


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, фев 21 2008, 16:05 
Начинающий
Начинающий

Зарегистрирован:
Вт, фев 12 2008, 10:56
Сообщения: 8
Цитата:
Так там же все четко написано - только для SELECT ... ENDSELECT при выборе во внутр.таблицу.

/ми выдрал из своей головы клок волос.

спасибо, добрый человек.


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

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


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

Сейчас этот форум просматривают: Google [Bot]


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

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