#oracle #raw
Вопрос:
Я столкнулся с некоторым кодом, который никогда не был реализован (см. Ниже).
CREATE TABLE encryption_values
(
NAME VARCHAR2(6),
VALUE NVARCHAR2(100)
);
/
insert into encryption_values
select 'key' name,
rawtohex (
rpad ('52AB32;^$!ER94988OPS3W21@@=WTQ32',32,'X')
) value
from dual
union
select 'iv' name,
rawtohex (
rpad ('TY54ABCX12@÷× ==643QREVDG43AAYMN',32,'X')
) value
from dual;
Я хочу изменить определение таблицы с NVARCHAR2(100) на RAW(256). Я пытался использовать
UTL_RAW.cast_to_raw ()
, но я сталкиваюсь с некоторыми синтаксическими ошибками. Может ли кто-нибудь, пожалуйста, предоставить мне правильный синтаксис. Примечание.Я хочу сохранить RPAD, чтобы убедиться, что я конвертирую 32 байта символов.
Я хочу ВСТАВИТЬ данные в это определение таблицы.
CREATE TABLE encryption_values
(
NAME VARCHAR2(6),
VALUE RAW(256)
);
/
Комментарии:
1. Вы пробовали просто заменить оба
rawtohex
звонка наUTL_RAW.cast_to_raw
? Как выглядит ваш текущий код и какие синтаксические ошибки вы получаете?
Ответ №1:
Вы используете неправильную функцию, rawtohex
. Вы должны использовать в вашем случае cast_to_raw
из пакета utl_raw
Эта функция преобразует значение VARCHAR2, представленное с использованием некоторого количества байтов данных, в ИСХОДНОЕ значение с таким количеством байтов данных. Сами данные никоим образом не изменяются, но их тип данных преобразуется в НЕОБРАБОТАННЫЙ тип данных.
ДЕМОНСТРАЦИЯ
SQL> desc encryption_values
Name Null? Type
----------------------------------------- -------- ----------------------------
NAME VARCHAR2(6)
VALUE RAW(256)
SQL> insert into encryption_values
2 select 'key' name,
3 utl_raw.cast_to_raw (rpad('52AB32;^$!ER94988OPS3W21@@=WTQ32',32,'X')) value
4 from dual
5 union
6 select 'iv' name,
7 utl_raw.cast_to_raw (rpad('TY54ABCX12@÷× ==643QREVDG43AAYMN',32,'X')) value
8* from dual
SQL> /
2 rows created.
SQL> select * from encryption_values ;
NAME
------
VALUE
--------------------------------------------------------------------------------
iv
5459353441424358313240EFBFBDEFBFBDEFBFBDEFBFBD2B3D3D3634335152455644473433414159
key
3532414233323B5E2421455239343938384F50533357323140403D5754513332