У меня есть класс ABAP с различными методами для чтения / записи в удаленный экземпляр Microsoft SQL Server 2005.
Все работает как положено. Теперь мне порекомендовали добавить подсказку таблицы SQL Server (READPAST) в запрос SELECT по соображениям безопасности (это должна быть мера против тупиков - я далеко не эксперт по SQL).
К сожалению, я не могу заставить это работать. Это мой блок Native SQL, и как он работает:
EXEC SQL.
OPEN ritc FOR
SELECT FIELD1,
FIELD2,
FIELD3,
FROM MY_TABLE
WHERE FIELD1 <= :lv_variable1
AND FIELD3 = :c_constant
ENDEXEC.
Если я пытаюсь добавить WITH(READPAST)
сразу после FROM MY_TABLE
, я получаю эту ошибку: Вы можете указать блокировку READPAST только в уровнях изоляции READ COMMITTED или REPEATABLE READ .
Достаточно справедливо: я попытался добавить эту команду прямо перед строкой OPEN ritc
:
SET TRANSACTION ISOLATION LEVEL READ COMMITTED
Это вызывает другую ошибку: при первой команде FETCH
после этого блока я получаю сообщение об ошибке, в котором говорится, что курсор ritc
существует, и он уже открыт.
На данный момент я даже не уверен, что могу добавить табличные подсказки в блок Native SQL?
Есть предложения? Заранее спасибо.