
# UTL_RAW
#### 接口介绍
高级功能包UTL_RAW支持的所有接口请参见[表1]。
 表1UTL_RAW 
| 接口名称                                                                                                 | 描述                                |
|:---|:---|
| [UTL_RAW.CAST_FROM_BINARY_INTEGER] | 将INTEGER类型值转换为二进制表示形式（即RAW类型）。    |
| [UTL_RAW.CAST_TO_BINARY_INTEGER]   | 将二进制表示形式的整型值（即RAW类型）转换为INTEGER类型。 |
| [UTL_RAW.LENGTH]                   | 获取RAW类型对象的长度。                     |
| [UTL_RAW.CAST_TO_RAW]              | 将VARCHAR2类型值转化为二进制表示形式（即RAW类型）。   |
   
![](https://support.huaweicloud.com/devg-dws/public_sys-resources/notice_3.0-zh-cn.png)
RAW类型的外部表现形式是十六进制，内部存储形式是二进制。例如一个RAW类型的数据11001011的表现形式为'CB'，即在实际的类型转换中输入的是'CB'。
- UTL_RAW.CAST_FROM_BINARY_INTEGER 存储过程CAST_FROM_BINARY_INTEGER将INTEGER类型值转换为二进制表示形式（即RAW类型）。
  UTL_RAW.CAST_FROM_BINARY_INTEGER函数原型为：
  ```
  UTL_RAW.CAST_FROM_BINARY_INTEGER (
  n           IN  INTEGER,
  endianess   IN  INTEGER)
  RETURN RAW;
  ```
   表2UTL_RAW.CAST_FROM_BINARY_INTEGER接口参数说明 
  | 参数        | 描述                                            |
  |:---|:---|
  | n         | 待转成RAW类型的整型数值。                                |
  | endianess | 表示字节序的整型值1或2（1代表BIG_ENDIAN，2代表LITTLE-ENDIAN）。 |
     
  
- UTL_RAW.CAST_TO_BINARY_INTEGER 存储过程CAST_TO_BINARY_INTEGER将二进制表示形式的整型值（即RAW类型）转换为INTEGER类型。
  UTL_RAW.CAST_TO_BINARY_INTEGER函数原型为：
  ```
  UTL_RAW.CAST_TO_BINARY_INTEGER (
  r          IN  RAW,
  endianess  IN  INTEGER)
  RETURN BINARY_INTEGER;
  ```
   表3UTL_RAW.CAST_TO_BINARY_INTEGER接口参数说明 
  | 参数        | 描述                                            |
  |:---|:---|
  | r         | 二进制表示形式的整型值（即RAW类型）。                          |
  | endianess | 表示字节序的整型值1或2（1代表BIG_ENDIAN，2代表LITTLE-ENDIAN）。 |
     
  
- UTL_RAW.LENGTH
  存储过程LENGTH返回RAW类型对象的长度。
  UTL_RAW.LENGTH函数原型为：
  ```
  UTL_RAW.LENGTH(
  r      IN RAW)
  RETURN INTEGER;
  ```
  表4UTL_RAW.LENGTH接口参数说明 
  | 参数 | 描述      |
  |:---|:---|
  | r  | RAW类型对象 |
     
  
- UTL_RAW.CAST_TO_RAW
  存储过程CAST_TO_RAW将VARCHAR2类型的对象转换成RAW类型。
  UTL_RAW.CAST_TO_RAW函数原型为：
  ```
  UTL_RAW.CAST_TO_RAW(
  c      IN VARCHAR2)
  RETURN RAW;
  ```
  表5UTL_RAW.CAST_TO_RAW接口参数说明 
  | 参数 | 描述               |
  |:---|:---|
  | c  | 待转换的VARCHAR2类型对象 |
     
  
 
#### 示例
在存储过程中操作RAW数据：
```
CREATE OR REPLACE PROCEDURE proc_raw
AS
str varchar2(100) := 'abcdef';
source raw(100);
amount integer;
BEGIN
source := utl_raw.cast_to_raw(str);--类型转换
amount := utl_raw.length(source);--获取长度
dbms_output.put_line(amount);
END;
/
```
调用存储过程：
```
CALL proc_raw();
```
