Текущее время: Чт, мар 28 2024, 15:07

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




Начать новую тему Ответить на тему  [ Сообщений: 3 ] 
Автор Сообщение
 Заголовок сообщения: Есть ли внутренние таблицы в SQLScript?
СообщениеДобавлено: Вт, июн 07 2016, 00:47 
Младший специалист
Младший специалист

Зарегистрирован:
Пн, июн 25 2007, 22:27
Сообщения: 95
Пол: Мужской
Всем привет!
Пытаюсь создавать calculation view, чтобы использовать их в BW.
Есть концептуальный вопрос про внутренние таблицы, их обработку и вообще, отличия SQLScript от ABAP.

Пока из того, что я прочитал, напрашивается вывод, что тут нет внутренних таблиц как в ABAPе, которые можно заполнить, пробежаться по ним LOOP-ом, стереть какие-то строки и т.д.
Но далеко не в каждой задачке можно обойтись только селектами из БД.
Прочитал, в частности один блог http://scn.sap.com/community/developer-center/hana/blog/2014/12/16/using-array-as-internal-table-to-handle-and-process-data,
в котором описывается вариант замены внутренним таблицам: там они генерят по отдельному массиву на каждое поле требуемой "внутренней таблицы". Синхронизируют номера элементов этих массивов и достают по индексу значения. Но это же полный атас в плане отладки, поддержки, понимания кода и т.д.

Собственно, вопрос: есть ли в SQLScript какая-то замена внутренним таблицам ABAPа? Какие объекты ближе всего к этой идее?
Какие-нибудь примеры, ссылки на доки, ключевые слова и т.д.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Есть ли внутренние таблицы в SQLScript?
СообщениеДобавлено: Вт, июн 07 2016, 18:11 
Модератор
Модератор

Зарегистрирован:
Чт, окт 21 2010, 08:48
Сообщения: 128
Temporal tables есть. Но это не аналог внутренних таблиц в ABAP-е. SQL и ABAP требует различного мышления. Loop-ом по таблице можно, например, на ARRAY-ах как в статье, или курсором. Но это убивает производительность, убивает параллельность.
Поэтому, первое и самое важное - это изменить "строчное" мышление на "табличное"


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Есть ли внутренние таблицы в SQLScript?
СообщениеДобавлено: Ср, июн 08 2016, 13:44 
Младший специалист
Младший специалист

Зарегистрирован:
Пн, июн 25 2007, 22:27
Сообщения: 95
Пол: Мужской
Спасибо за совет. Постараюсь изменить, но в текущей задаче вряд ли это возможно, я не могу ее разложить просто на набор селектов.
По поводу производительности - это меня как раз не очень волнует, т.к. если удастся перенести логику из апл.сервера в БД, то это уже будет очень серьезное увеличение производительности. И пусть она там выполняется хоть в один поток, все равно это лучше, чем сначала все тащить на апл.сервер, а потом там обрабатывать.

Если можно, еще пара вопросов:
1. Есть CalculationView в Hana, которое будет использоваться для BW. Оно всегда создается типа read-only.
Если я внутри этой процедуры пишу "CREATE LOCAL TEMPORARY TABLE...", то получаю ошибку "DDL is not supported in the READ ONLY procedure/function".
Была мысль сделать отдельную процедуру и вынести логику туда, а эту процедуру просто вызывать из CalculationView. Но почитав SDN, я понял, что этот вариант меня тоже не спасет, т.к. из readonly-процедуры нельзя вызывать readwrite-процедуру. А определение Temporal table возможно только в ней.
Получается, что для варианта CalculationView использование временных таблиц в принципе недоступно? Или я что-то упустил?

2. Не могу пока разобраться в области действия этих временных таблиц в варианте BW. Вот предположим, есть какая-то процедура, в которой заполняется временная таблица. Везде написано, что область ее жизни - это сессия, но что в данном случае является сессией? Для всех "сессий" апл.сервера идет коннект к БД под одним и тем же пользователем SAPABAP1. Каждый пользователь BW в данном случае порождает отдельную сессию БД? Или это все происходит в рамках одной? Опять же, в случае ABAP все понятно, подсоединился юзер, открылась новая сессия, все друг от друга изолированы. А здесь как? Я просто пытаюсь понять, будут ли изолированы друг от друга два одновременных запуск одной задачи разными пользователями BW.


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

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


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

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


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

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