Время чтения ~5 мин.

Здравствуйте друзья мои! С вами.. кх..кх…

Всем привет!

Сегодня мы наконец разберемся с тем, зачем в Open SQL начиная c релиза 7.40, SP05 используется символ @.

Информация будет полезна начинающим abap-разработчикам и консультантам, которые нет-нет, да напишут что-нибудь эдакое).

Итак, для начала обратимся к справке, которая говорит нам, что

«Хост-переменные — это глобальные или локальные переменные (обычно переменные), объявленные в ABAP программе, которые используются в позициях операндов операторов Open SQL.

Содержимое хост-переменных в позициях чтения передается в систему базы данных вместе с оператором SQL перед его выполнением. Содержимое хост-переменных в позициях записи берется из системы базы данных после завершения оператора SQL«.

Таким образом, хост-переменные — это все те же переменные, которые вы использовали раньше. Изменилось только то, что теперь их необходимо экранировать.

Первая мысль, которая приходит на ум — зачем?

Ответ прост:

В новых версиях в Open SQL стали доступны новые функции, которые выполняются на стороне сервера БД. Так вот, для того, чтобы интерпретатор при выполнении этих функций мог различать данные из БД и данные с сервера приложений, последние необходимо экранировать. В Open SQL в качестве экранирующего символа выбрана @.

В завершении рассмотрим простой пример:

Наверняка вы совсем недавно писали запрос в похожем стиле.

Однако, на сегодняшний день правильным будет экранировать хост-переменные, даже несмотря на то, что новые функции на стороне БД в данном примере не выполняются.

На этом все, спасибо за прочтение!

Изображение на заставке позаимствовано здесь.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.