Текущее время: Ср, дек 13 2017, 05:52

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




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

Зарегистрирован:
Пн, июн 25 2007, 23: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, 19:11 
Модератор
Модератор

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


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

Зарегистрирован:
Пн, июн 25 2007, 23: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 + 4 часа


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

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


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

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