Являются ли переменными типа RAW
неизменяемыми в PL/SQL-коде? Я имею в виду, могу ли я изменить конкретный байт переменной типа RAW
как раз на месте без копирования памяти?
Конечно, у нас есть пакет UTL_RAW
с некоторыми подпрограммами, подходящими для изменения байта спецификации, но похоже, что все они копируют память экземпляра переменной:
UTL_RAW.BIT_AND
UTL_RAW.BIT_OR
UTL_RAW.OVERLAY
Также этот вопрос тесно связан с эффективной проблемой конкатенации строк. Например, в Java строки тоже неизменяемы, и для этой задачи у нас есть StringBuilder. Я не нашел четкой информации в документах Oracle по этому вопросу. После некоторого googling [1] ответ выглядит как: Да. Переменные типа RAW неизменяемы в коде PL/SQL, а также строки. Это правда? Было бы лучше иметь больше объяснений и историю этого вопроса.
Литература: