首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用UTL_RAW.cast_to_raw插入RAW

用UTL_RAW.cast_to_raw插入RAW
EN

Stack Overflow用户
提问于 2021-10-06 18:14:53
回答 1查看 604关注 0票数 0

我遇到了一些从未实现过的代码(见下文)。

代码语言:javascript
复制
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个字符字节。

我希望将数据插入到这个表定义中。

代码语言:javascript
复制
CREATE TABLE encryption_values
(
  NAME   VARCHAR2(6),
  VALUE  RAW(256)
);
/
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-10-06 19:01:09

你使用了错误的函数,rawtohex。在您的示例中,必须使用包cast_to_raw中的utl_raw

此函数将使用一定数量的数据字节表示的VARCHAR2值转换为具有该数目的数据字节的原始值。数据本身没有以任何方式被修改,但是它的数据类型被重铸为原始数据类型。

Demo

代码语言:javascript
复制
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
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69470745

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档