将字符串分配给原始变量时,Oracle PL/SQL:ORA-06502错误

use*_*428 2 oracle plsql

我尝试将一些文本信息加载到clob字段中.我减少了代码,我遇到了以下代码:

DECLARE
    WS_MAIN_CHUNK RAW(12001);
BEGIN
    WS_MAIN_CHUNK := 'Do';
END;
/
Run Code Online (Sandbox Code Playgroud)

它给出了错误ORA-06512 PL/SQL:数字或值错误:十六进制到原始转换错误.为什么字符串'Do'是十六进制值,如何修复它?>只需将字符串赋值给原始变量?

谢谢你的帮助

Nic*_*nov 6

在Oracle中,RAW数据类型用于存储二进制数据和任何面向字节的数据.您不能直接将字符串值分配给RAW数据类型的变量.如果有这种需要,你可以使用utl_raw包和cast_to_raw函数来做到这一点:

SQL> DECLARE
  2      WS_MAIN_CHUNK raw(12001);
  3  BEGIN
  4      WS_MAIN_CHUNK :=  utl_raw.cast_to_raw('Do');
  5  END;
  6  /

PL/SQL procedure successfully completed
Run Code Online (Sandbox Code Playgroud)