
# PKG_UTIL
PKG_UTIL支持的所有接口请参见[表1]：
 表1PKG_UTIL 
| 接口名称                                                                                                                    | 描述                        |
|:---|:---|
| [PKG_UTIL.LOB_GET_LENGTH]                 | 获取lob的长度。                 |
| [PKG_UTIL.LOB_READ]                       | 读取lob对象的一部分。              |
| [PKG_UTIL.LOB_WRITE]                        | 将源对象按照指定格式写入到目标对象。        |
| [PKG_UTIL.LOB_APPEND]                    | 将lob源对象指定个数的字符追加到目标lob对象。 |
| [PKG_UTIL.LOB_COMPARE]                    | 根据指定长度比较两个lob对象。          |
| [PKG_UTIL.LOB_MATCH]                         | 返回一个字符串在LOB中第N次出现的位置。     |
| [PKG_UTIL.LOB_RESET]                      | 将lob的指定位置重置为指定字符。         |
| [PKG_UTIL.IO_PRINT]                         | 将字符串打印输出。                 |
| [PKG_UTIL.RAW_GET_LENGTH]                     | 获取raw的长度。                 |
| [PKG_UTIL.RAW_CAST_FROM_VARCHAR2]          | 将varchar2转化为raw。          |
| [PKG_UTIL.RAW_CAST_FROM_BINARY_INTEGER]   | 将binary integer转化为raw。    |
| [PKG_UTIL.RAW_CAST_TO_BINARY_INTEGER]     | 将raw转化为binary integer。    |
| [PKG_UTIL.RANDOM_SET_SEED]                  | 设置随机种子。                   |
| [PKG_UTIL.RANDOM_GET_VALUE]                   | 返回随机值。                    |
| [PKG_UTIL.FILE_SET_DIRNAME]                 | 设置当前操作的目录。                |
| [PKG_UTIL.FILE_OPEN]                        | 根据指定文件名和设置的目录打开一个文件。      |
| [PKG_UTIL.FILE_SET_MAX_LINE_SIZE]          | 设置写入文件一行的最大长度。            |
| [PKG_UTIL.FILE_IS_CLOSE]                  | 检测一个文件句柄是否关闭。             |
| [PKG_UTIL.FILE_READ]                      | 从一个打开的文件句柄中读取指定长度的数据。     |
| [PKG_UTIL.FILE_READLINE]                   | 从一个打开的文件句柄中读取一行数据。        |
| [PKG_UTIL.FILE_WRITE]                       | 将BUFFER中的数据写入到文件中。        |
| [PKG_UTIL.FILE_WRITELINE]                     | 将BUFFER写入文件，并追加换行符。       |
| [PKG_UTIL.FILE_NEWLINE]                   | 新起一行。                     |
| [PKG_UTIL.FILE_READ_RAW]                    | 从一个打开的文件句柄中读取指定长度的二进制数据。  |
| [PKG_UTIL.FILE_WRITE_RAW]                  | 将二进制数据写入到文件中。             |
| [PKG_UTIL.FILE_FLUSH]                     | 将一个文件句柄中的数据写入到物理文件中。      |
| [PKG_UTIL.FILE_CLOSE]                      | 关闭一个打开的文件句柄。              |
| [PKG_UTIL.FILE_REMOVE]                     | 删除一个物理文件，操作需要有对应权限。       |
| [PKG_UTIL.FILE_RENAME]                     | 对于磁盘上的文件进行重命名，类似UNIX的mv。  |
| [PKG_UTIL.FILE_SIZE]                      | 返回文件大小。                   |
| [PKG_UTIL.FILE_BLOCK_SIZE]                | 返回文件含有的块数量。               |
| [PKG_UTIL.FILE_EXISTS]                       | 判断文件是否存在。                 |
| [PKG_UTIL.FILE_GETPOS]                       | 返回文件的偏移量，单位字节。            |
| [PKG_UTIL.FILE_SEEK]                        | 设置文件位置为指定偏移。              |
| [PKG_UTIL.FILE_CLOSE_ALL]                | 关闭一个会话中打开的所有文件句柄。         |
| [PKG_UTIL.EXCEPTION_REPORT_ERROR]        | 抛出一个异常。                   |
| [PKG_UTIL.APP_READ_CLIENT_INFO]            | 读取client_info信息。          |
| [PKG_UTIL.APP_SET_CLIENT_INFO]                | 设置client_info信息。          |
| [PKG_UTIL.LOB_CONVERTTOBLOB]                | clob类型转换成blob类型。          |
| [PKG_UTIL.LOB_CONVERTTOCLOB]               | blob类型转换成clob类型。          |
| [PKG_UTIL.LOB_RAWTOTEXT]                  | raw类型转成text类型。            |
| [PKG_UTIL.LOB_TEXTTORAW]                    | text类型转成raw类型。            |
| [PKG_UTIL.MATCH_EDIT_DISTANCE_SIMILARITY] | 计算两个字符串的差距。               |
| [PKG_UTIL.RAW_CAST_TO_VARCHAR2]           | raw类型转成varchar2类型。        |
| [PKG_UTIL.SESSION_CLEAR_CONTEXT]          | 清空session_context中的属性值。   |
| [PKG_UTIL.SESSION_SEARCH_CONTEXT]         | 查找一个属性值。                  |
| [PKG_UTIL.SESSION_SET_CONTEXT]               | 设置一个属性值。                  |
| [PKG_UTIL.UTILITY_FORMAT_CALL_STACK]       | 查看存储过程的调用堆栈。              |
| [PKG_UTIL.UTILITY_FORMAT_ERROR_BACKTRACE] | 查看存储过程的错误堆栈。              |
| [PKG_UTIL.UTILITY_FORMAT_ERROR_STACK]       | 查看存储过程的报错信息。              |
| [PKG_UTIL.UTILITY_GET_TIME]                | 查看系统UNIX时间戳。              |
   
- PKG_UTIL.LOB_GET_LENGTH
  该函数LOB_GET_LENGTH获取输入数据的长度。
  PKG_UTIL.LOB_GET_LENGTH函数原型为：
  ```
  PKG_UTIL.LOB_GET_LENGTH(
  lob       IN   anyelement
  )
  RETURN INTEGER;
  ```
  表2PKG_UTIL.LOB_GET_LENGTH接口参数说明 
  | 参数  | 类型        | 入参/出参 | 是否可以为空 | 描述        |
  |:---|:---|:---|:---|:---|
  | lob | clob/blob | IN    | 否      | 待获取长度的对象。 |
     
  
- PKG_UTIL.LOB_READ
  该函数LOB_READ读取一个对象，并返回指定部分。
  PKG_UTIL.LOB_READ函数原型为：
  ```
  PKG_UTIL.LOB_READ(
  lob       IN   anyelement,
  len       IN   int,
  start     IN   int,
  mode      IN   int
  )
  RETURN ANYELEMENT
  ```
  表3PKG_UTIL.LOB_READ接口参数说明 
  | 参数    | 类型        | 入参/出参 | 是否可以为空 | 描述                                        |
  |:---|:---|:---|:---|:---|
  | lob   | clob/blob | IN    | 否      | clob或者blob类型数据。                           |
  | len   | int       | IN    | 否      | 返回结果长度。                                   |
  | start | int       | IN    | 否      | 相较于第一个字符的偏移量。                             |
  | mode  | int       | IN    | 否      | 判断读取操作的类型， 0 ：read; 1 : trim; 2 : substr。 |
     
  
- PKG_UTIL.LOB_WRITE
  该函数LOB_WRITE将源对象按照指定的参数写入目标对象, 并返回目标对象。
  PKG_UTIL.LOB_WRITE函数原型为：
  ```
  PKG_UTIL.LOB_WRITE(
  dest_lob    INOUT   blob,
  src_lob     IN      raw
  len         IN      int,
  start_pos   IN      int
  )
  RETURN BLOB;
  PKG_UTIL.LOB_WRITE(
  dest_lob    INOUT   clob,
  src_lob     IN      varchar2
  len         IN      int,
  start_pos       IN      int
  )
  RETURN CLOB;
  ```
  表4PKG_UTIL.LOB_WRITE接口参数说明 
  | 参数        | 类型        | 入参/出参 | 是否可以为空 | 描述           |
  |:---|:---|:---|:---|:---|
  | dest_lob  | clob/blob | INOUT | 否      | 写入的目标对象。     |
  | src_lob   | clob/blob | IN    | 否      | 被写入的源对象。     |
  | len       | int       | IN    | 否      | 源对象的写入长度。    |
  | start_pos | int       | IN    | 否      | 目标对象的写入起始位置。 |
     
  
- PKG_UTIL.LOB_APPEND
  该函数LOB_APPEND将源blob/clob对象追加到目标blob/clob对象, 并返回目标对象。
  PKG_UTIL.LOB_APPEND函数原型为：
  ```
  PKG_UTIL.LOB_APPEND(
  dest_lob    INOUT   blob,
  src_lob     IN      blob,
  len         IN      int default NULL
  )
  RETURN BLOB;
  PKG_UTIL.LOB_APPEND(
  dest_lob    INOUT   clob,
  src_lob     IN      clob,
  len         IN      int default NULL
  )
  RETURN CLOB;
  ```
  表5PKG_UTIL.LOB_APPEND接口参数说明 
  | 参数       | 类型        | 入参/出参 | 是否可以为空 | 描述                        |
  |:---|:---|:---|:---|:---|
  | dest_lob | blob/clob | INOUT | 否      | 写入的目标blob/clob对象。         |
  | src_lob  | blob/clob | IN    | 否      | 被写入的源blob/clob对象。         |
  | len      | int       | IN    | 是      | 写入源对象的长度，为NULL则默认写入源对象全部。 |
     
  
- PKG_UTIL.LOB_COMPARE
  该函数LOB_COMPARE按照指定的起始位置、个数比较对象是否相同，lob1大则返回1，lob2大返回-1，相等返回0。
  PKG_UTIL.LOB_COMPARE函数原型为：
  ```
  PKG_UTIL.LOB_COMPARE(
  lob1        IN   anyelement,
  lob2        IN   anyelement,
  len         IN   int default 1073741771,
  start_pos1      IN   int default 1,
  start_pos2      IN   int default 1
  )
  RETURN INTEGER;
  ```
  表6PKG_UTIL.LOB_COMPARE接口参数说明 
  | 参数         | 类型        | 入参/出参 | 是否可以为空 | 描述         |
  |:---|:---|:---|:---|:---|
  | lob1       | clob/blob | IN    | 否      | 待比较的字符串。   |
  | lob2       | clob/blob | IN    | 否      | 待比较的字符串。   |
  | len        | int       | IN    | 否      | 比较的长度。     |
  | start_pos1 | int       | IN    | 否      | lob1起始偏移量。 |
  | start_pos2 | int       | IN    | 否      | lob2起始偏移量。 |
     
  
- PKG_UTIL.LOB_MATCH
  该函数LOB_MATCH返回pattern出现在lob对象中第match_nth次的位置。
  PKG_UTIL.LOB_MATCH函数原型为：
  ```
  PKG_UTIL.LOB_MATCH(
  lob          IN   anyelement,
  pattern      IN   anyelement,
  start        IN   int,
  match_nth    IN   int default 1
  )
  RETURN INTEGER;
  ```
  表7PKG_UTIL.LOB_MATCH接口参数说明 
  | 参数        | 类型        | 入参/出参 | 是否可以为空 | 描述           |
  |:---|:---|:---|:---|:---|
  | lob       | clob/blob | IN    | 否      | 待比较的字符串。     |
  | pattern   | clob/blob | IN    | 否      | 待匹配的pattern。 |
  | start     | int       | IN    | 否      | lob的起始比较位置。  |
  | match_nth | int       | IN    | 否      | 第几次匹配到。      |
     
  
- PKG_UTIL.LOB_RESET
  该函数LOB_RESET清除一段数据为字符value。
  PKG_UTIL.LOB_RESET函数原型为：
  ```
  PKG_UTIL.LOB_RESET(
  lob          INOUT   blob,
  len          INOUT   int,
  start        IN   int DEFAULT 1，
  value        IN   int default 0
  )
  RETURN record;
  ```
  表8PKG_UTIL.LOB_RESET接口参数说明 
  | 参数    | 类型   | 入参/出参 | 是否可以为空 | 描述            |
  |:---|:---|:---|:---|:---|
  | lob   | blob | IN    | 否      | 待重置的字符串。      |
  | len   | int  | IN    | 否      | 重置的长度。        |
  | start | int  | IN    | 否      | 重置的起始位置。      |
  | value | int  | IN    | 是      | 设置的字符。默认值'0'。 |
     
  
- PKG_UTIL.IO_PRINT
  该函数IO_PRINT将一段字符串打印输出。
  PKG_UTIL.IO_PRINT函数原型为：
  ```
  PKG_UTIL.IO_PRINT(
  format       IN   text,
  is_one_line  IN   boolean
  )
  RETURN void;
  ```
  表9PKG_UTIL.IO_PRINT接口参数说明 
  | 参数          | 类型      | 入参/出参 | 是否可以为空 | 描述         |
  |:---|:---|:---|:---|:---|
  | format      | text    | IN    | 否      | 待打印输出的字符串。 |
  | is_one_line | boolean | IN    | 否      | 是否输出为一行。   |
     
  
- PKG_UTIL.RAW_GET_LENGTH
  该函数RAW_GET_LENGTH获取raw的长度。
  PKG_UTIL.RAW_GET_LENGTH函数原型为：
  ```
  PKG_UTIL.RAW_GET_LENGTH(
  value       IN   raw
  )
  RETURN integer;
  ```
  表10PKG_UTIL.RAW_GET_LENGTH接口参数说明 
  | 参数  | 类型  | 入参/出参 | 是否可以为空 | 描述        |
  |:---|:---|:---|:---|:---|
  | raw | raw | IN    | 否      | 待获取长度的对象。 |
     
  
- PKG_UTIL.RAW_CAST_FROM_VARCHAR2
  该函数RAW_CAST_FROM_VARCHAR2将varchar2转化为raw。
  PKG_UTIL.RAW_CAST_FROM_VARCHAR2函数原型为：
  ```
  PKG_UTIL.RAW_CAST_FROM_VARCHAR2(
  str       IN   varchar2
  )
  RETURN raw;
  ```
  表11PKG_UTIL.RAW_CAST_FROM_VARCHAR2接口参数说明 
  | 参数  | 类型       | 入参/出参 | 是否可以为空 | 描述        |
  |:---|:---|:---|:---|:---|
  | str | varchar2 | IN    | 否      | 需要转化的源数据。 |
     
  
- PKG_UTIL.RAW_CAST_FROM_BINARY_INTEGER
  该函数RAW_CAST_FROM_BINARY_INTEGER将BIGINT转化为RAW。
  PKG_UTIL.RAW_CAST_FROM_BINARY_INTEGER函数原型为：
  ```
  PKG_UTIL.RAW_CAST_FROM_BINARY_INTEGER(
  value       IN   BIGINT,
  endianess   IN   INTEGER
  )
  RETURN RAW;
  ```
  表12PKG_UTIL.RAW_CAST_FROM_BINARY_INTEGER接口参数说明 
  | 参数        | 类型      | 入参/出参 | 是否可以为空 | 描述                                                 |
  |:---|:---|:---|:---|:---|
  | value     | BIGINT  | IN    | 否      | 需要转化的源数据。                                          |
  | endianess | INTEGER | IN    | 否      | 表示字典序的整型值，当前支持1或2（1代表BIG_ENDIAN，2代表LITTLE_ENDIAN）。 |
     
  
- PKG_UTIL.RAW_CAST_TO_BINARY_INTEGER
  该函数RAW_CAST_TO_BINARY_INTEGER将RAW转化为BINARY_INTEGER。
  PKG_UTIL.RAW_CAST_TO_BINARY_INTEGER函数原型为：
  ```
  PKG_UTIL.RAW_CAST_TO_BINARY_INTEGER(
  value       IN   RAW,
  endianess   IN   INTEGER
  )
  RETURN INTEGER;
  ```
  表13PKG_UTIL.RAW_CAST_TO_BINARY_INTEGER接口参数说明 
  | 参数        | 类型      | 入参/出参 | 是否可以为空 | 描述                                                 |
  |:---|:---|:---|:---|:---|
  | value     | RAW     | IN    | 否      | 需要转化的源数据。                                          |
  | endianess | INTEGER | IN    | 否      | 表示字典序的整型值，当前支持1或2（1代表BIG_ENDIAN，2代表LITTLE_ENDIAN）。 |
     
  
- PKG_UTIL.RANDOM_SET_SEED
  该函数RANDOM_SET_SEED设置随机数种子。
  PKG_UTIL.RANDOM_SET_SEED函数原型为：
  ```
  PKG_UTIL.RANDOM_SET_SEED(
  seed         IN   int
  )
  RETURN integer;
  ```
  表14PKG_UTIL.RANDOM_SET_SEED接口参数说明 
  | 参数   | 类型  | 入参/出参 | 是否可以为空 | 描述     |
  |:---|:---|:---|:---|:---|
  | seed | int | IN    | 否      | 随机数种子。 |
     
  

- PKG_UTIL.RANDOM_GET_VALUE
  该函数RANDOM_GET_VALUE返回0\~1区间的一个随机数，其有效数字为15位。
  PKG_UTIL.RANDOM_GET_VALUE函数原型为：
  ```
  PKG_UTIL.RANDOM_GET_VALUE(
  )
  RETURN numeric;
  ```
  

- PKG_UTIL.FILE_SET_DIRNAME
  设置当前操作的目录，基本上所有涉及单个目录的操作，都需要调用此方法先设置操作的目录。
  PKG_UTIL.FILE_SET_DIRNAME函数原型为：
  ```
  PKG_UTIL.FILE_SET_DIRNAME(
  dir  IN  text
  )
  RETURN bool
  ```
  表15PKG_UTIL.FILE_SET_DIRNAME接口参数说明 
  | 参数      | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
  |:---|:---|
  | dirname | 文件的目录位置，这个字符串是一个目录对象名。 说明： 文件目录的位置，需要添加到系统表[PG_DIRECTORY](https://support.huaweicloud.com/centralized-devg-v2-gaussdb/gaussdb_42_0664.html#ZH-CN_TOPIC_0000002186016490)中，如果传入的路径和[PG_DIRECTORY](https://support.huaweicloud.com/centralized-devg-v2-gaussdb/gaussdb_42_0664.html#ZH-CN_TOPIC_0000002186016490)中的路径不匹配，会报路径不存在的错误，下面的涉及location作为参数的函数也是同样的情况。 |
     
  
- PKG_UTIL.FILE_OPEN
  该函数用来打开一个文件，最多可以同时打开50个文件。并且该函数返回INTEGER类型的一个句柄。
  PKG_UTIL.FILE_OPEN函数原型为：
  ```
  PKG_UTIL.FILE_OPEN(
  file_name    IN  text, 
  open_mode    IN  integer)
  ```
  表16PKG_UTIL.FILE_OPEN接口参数说明 
  | 参数        | 描述                                                                                                                                                                                                                                              |
  |:---|:---|
  | file_name | 文件名，包含扩展（文件类型），不包括路径名。如果文件名中包含路径，在OPEN中会被忽略，在UNIX系统中，文件名不能以/.结尾。                                                                                                                                                                                |
  | open_mode | 指定文件的打开模式，包含r：read text，w: write text和a: append text。 说明： 对于写操作，会检测文件类型，如果写入elf文件，将会报错并退出。 |
     
  
- PKG_UTIL.FILE_SET_MAX_LINE_SIZE
  设置写入文件一行的最大长度。
  PKG_UTIL.FILE_SET_MAX_LINE_SIZE函数原型为：
  ```
  PKG_UTIL.FILE_SET_MAX_LINE_SIZE(
  max_line_size in integer)
  RETURN BOOL
  ```
  表17PKG_UTIL.FILE_SET_MAX_LINE_SIZE接口参数说明 
  | 参数            | 描述                                                  |
  |:---|:---|
  | max_line_size | 每行最大字符数，包含换行符（最小值是1，最大值是32767）。如果没有指定，会指定一个默认值1024。 |
     
  
- PKG_UTIL.FILE_IS_CLOSE
  检测一个文件句柄是否关闭。
  PKG_UTIL.FILE_IS_CLOSE函数原型为：
  ```
  PKG_UTIL.FILE_IS_CLOSE(
  file in integer
  )
  RETURN BOOL
  ```
  表18PKG_UTIL.FILE_IS_CLOSE接口参数说明 
  | 参数   | 描述         |
  |:---|:---|
  | file | 一个打开的文件句柄。 |
     
  
- PKG_UTIL.FILE_READ
  根据指定的长度从一个打开的文件句柄中读取出数据。
  PKG_UTIL.FILE_READ函数原型为：
  ```
  PKG_UTIL.FILE_READ(
  file     IN   integer,
  buffer   OUT  text,
  len      IN   bigint default 1024)
  ```
  表19PKG_UTIL.FILE_READ接口参数说明 
  | 参数     | 描述                                                     |
  |:---|:---|
  | file   | 通过调用OPEN打开的文件句柄，文件必须以读的模式打开，否则会抛出INVALID_OPERATION的异常。 |
  | buffer | 用于接收数据的BUFFER。                                         |
  | len    | 从文件中读取的字节数。                                            |
     
  
- PKG_UTIL.FILE_READLINE
  根据指定的长度从一个打开的文件句柄中读取出一行数据。
  PKG_UTIL.FILE_READLINE函数原型为：
  ```
  PKG_UTIL.FILE_READLINE(
  file    IN  integer,
  buffer  OUT text,
  len     IN  integer default NULL)
  ```
  表20PKG_UTIL.FILE_READLINE接口参数说明 
  | 参数     | 描述                                                     |
  |:---|:---|
  | file   | 通过调用OPEN打开的文件句柄，文件必须以读的模式打开，否则会抛出INVALID_OPERATION的异常。 |
  | buffer | 用于接收数据的BUFFER。                                         |
  | len    | 从文件中读取的字节数，默认是NULL。如果是默认NULL，会使用max_line_size来指定大小。    |
     
  
- PKG_UTIL.FILE_WRITE
  将BUFFER中指定的数据写入到文件中。
  PKG_UTIL.FILE_WRITE函数原型为：
  ```
  PKG_UTIL.FILE_WRITE(
  file in integer,
  buffer in text
  )
  RETURN BOOL
  ```
  表21PKG_UTIL.FILE_WRITE接口参数说明 
  | 参数     | 描述                                                                                                                                                                                                                                                                                     |
  |:---|:---|
  | file   | 一个打开的文件句柄。                                                                                                                                                                                                                                                                             |
  | buffer | 要写入文件的文本数据，BUFFER的最大值是32767个字节。如果没有指定值，默认是1024个字节，没有刷新到文件之前，一系列的PUT操作的BUFFER总和不能超过32767个字节。 说明： 对于写操作，会检测文件类型，如果写入elf文件，将会报错并退出。 |
     
  
- PKG_UTIL.FILE_NEWLINE
  向一个打开的文件中写入一个行终结符。行终结符和平台相关。
  PKG_UTIL.FILE_NEWLINE函数原型为：
  ```
  PKG_UTIL.FILE_NEWLINE(
  file in integer
  )
  RETURN BOOL
  ```
  表22PKG_UTIL.FILE_NEWLINE接口参数说明 
  | 参数   | 描述         |
  |:---|:---|
  | file | 一个打开的文件句柄。 |
     
  
- PKG_UTIL.FILE_WRITELINE
  向一个打开的文件中写入一行。
  PKG_UTIL.FILE_WRITELINE函数原型为：
  ```
  PKG_UTIL.FILE_WRITELINE(
  file in integer,
  buffer in text
  )
  RETURN BOOL
  ```
  表23PKG_UTIL.FILE_WRITELINE接口参数说明 
  | 参数     | 描述         |
  |:---|:---|
  | file   | 一个打开的文件句柄。 |
  | buffer | 要写入的内容。    |
     
  
- PKG_UTIL.FILE_READ_RAW
  从一个打开的文件句柄中读取指定长度的二进制数据，返回读取的二进制数据，返回类型为raw。
  PKG_UTIL.FILE_READ_RAW函数原型为：
  ```
  PKG_UTIL.FILE_READ_RAW(
  file      in integer,
  length    in integer default NULL
  )
  RETURN raw
  ```
  表24PKG_UTIL.FILE_READ_RAW接口参数说明 
  | 参数     | 描述                                   |
  |:---|:---|
  | file   | 一个打开的文件句柄。                           |
  | length | 要读取的长度，默认为NULL。默认情况下读取文件中所有数据，最大为1G。 |
     
  
- PKG_UTIL.FILE_WRITE_RAW
  向一个打开的文件中写入传入二进制对象RAW。插入成功返回true。
  PKG_UTIL.FILE_WRITE_RAW函数原型为：
  ```
  PKG_UTIL.FILE_WRITE_RAW(
  file in integer,
  r    in raw
  )
  RETURN BOOL
  ```
  表25PKG_UTIL.FILE_NEWLINE接口参数说明 
  | 参数   | 描述                                                                                                                                                                                                   |
  |:---|:---|
  | file | 一个打开的文件句柄。                                                                                                                                                                                           |
  | r    | 准备传入文件的数据 说明： 对于写操作，会检测文件类型，如果写入elf文件，将会报错并退出。 |
     
  
- PKG_UTIL.FILE_FLUSH
  一个文件句柄中的数据要写入到物理文件中，缓冲区中的数据必须要有一个行终结符。当文件必须在打开时读取，刷新非常有用。例如，调试信息可以刷新到文件中，以便立即读取。
  PKG_UTIL.FILE_FLUSH函数原型为：
  ```
  PKG_UTIL.FILE_FLUSH（
  file in integer
  ）
  RETURN VOID
  ```
  表26PKG_UTIL.FILE_FLUSH接口参数说明 
  | 参数   | 描述         |
  |:---|:---|
  | file | 一个打开的文件句柄。 |
     
  
- PKG_UTIL.FILE_CLOSE
  关闭一个打开的文件句柄。
  PKG_UTIL.FILE_CLOSE函数原型为：
  ```
  PKG_UTIL.FILE_CLOSE（
  file in integer
  ）
  RETURN BOOL
  ```
  表27PKG_UTIL.FILE_CLOSE接口参数说明 
  | 参数   | 描述         |
  |:---|:---|
  | file | 一个打开的文件句柄。 |
     
  
- PKG_UTIL.FILE_REMOVE
  删除一个磁盘文件，操作的时候需要有充分的权限。
  PKG_UTIL.FILE_REMOVE函数原型为：
  ```
  PKG_UTIL.FILE_REMOVE(
  file_name in text
  )
  RETURN VOID
  ```
  表28PKG_UTIL.FILE_REMOVE接口参数说明 
  | 参数        | 描述      |
  |:---|:---|
  | filen_ame | 要删除的文件名 |
     
  
- PKG_UTIL.FILE_RENAME
  对于磁盘上的文件进行重命名，类似UNIX的mv。
  PKG_UTIL.FILE_RENAME函数原型为：
  ```
  PKG_UTIL.FILE_RENAME(
  src_dir in text, 
  src_file_name in text, 
  dest_dir in text, 
  dest_file_name in text, 
  overwrite boolean default false)
  ```
  表29PKG_UTIL.FILE_RENAME接口参数说明 
  | 参数             | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
  |:---|:---|
  | src_dir        | 源文件目录（大小写敏感）。 说明： - 文件目录的位置，需要添加到系统表[PG_DIRECTORY](https://support.huaweicloud.com/centralized-devg-v2-gaussdb/gaussdb_42_0664.html#ZH-CN_TOPIC_0000002186016490)中，如果传入的路径和[PG_DIRECTORY](https://support.huaweicloud.com/centralized-devg-v2-gaussdb/gaussdb_42_0664.html#ZH-CN_TOPIC_0000002186016490)中的路径不匹配，会报路径不存在的错误，下面的涉及location作为参数的函数也是同样的情况。  - 在打开guc参数safe_data_path时，用户只能通过高级包读写safe_data_path指定文件路径下的文件。        |
  | src_file_name  | 源文件名。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
  | dest_dir       | 目标文件目录（大小写敏感）。 说明： - 文件目录的位置，需要添加到系统表[PG_DIRECTORY](https://support.huaweicloud.com/centralized-devg-v2-gaussdb/gaussdb_42_0664.html#ZH-CN_TOPIC_0000002186016490)中，如果传入的路径和[PG_DIRECTORY](https://support.huaweicloud.com/centralized-devg-v2-gaussdb/gaussdb_42_0664.html#ZH-CN_TOPIC_0000002186016490)中的路径不匹配，会报路径不存在的错误，下面的涉及location作为参数的函数也是同样的情况。  - 在打开guc参数safe_data_path时，用户只能通过高级包读写safe_data_path指定文件路径下的文件。   |
  | dest_file_name | 目标文件名。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
  | overwrite      | 默认是false，如果目的目录下存在一个同名的文件，不会进行重写。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
     
  
- PKG_UTIL.FILE_SIZE
  返回指定的文件大小。
  PKG_UTIL.FILE_SIZE函数原型为：
  ```
  bigint PKG_UTIL.FILE_SIZE(
  file_name in text
  )return bigint
  ```
  表30PKG_UTIL.FILE_SIZE接口参数说明 
  | 参数        | 描述  |
  |:---|:---|
  | file_name | 文件名 |
     
  
- PKG_UTIL.FILE_BLOCK_SIZE
  返回指定的文件含有的块数量。
  PKG_UTIL.FILE_BLOCK_SIZE函数原型为：
  ```
  bigint PKG_UTIL.FILE_BLOCK_SIZE(
  file_name in text
  )return bigint
  ```
  表31PKG_UTIL.FILE_BLOCK_SIZE接口参数说明 
  | 参数        | 描述  |
  |:---|:---|
  | file_name | 文件名 |
     
  
- PKG_UTIL.FILE_EXISTS
  判断指定的文件是否存在。
  PKG_UTIL.FILE_EXISTS函数原型为：
  ```
  PKG_UTIL.FILE_EXISTS(
  file_name in text
  )
  RETURN BOOL
  ```
  表32PKG_UTIL.FILE_EXISTS接口参数说明 
  | 参数        | 描述  |
  |:---|:---|
  | file_name | 文件名 |
     
  
- PKG_UTIL.FILE_GETPOS
  返回文件的偏移量，单位字节。
  PKG_UTIL.FILE_GETPOS函数原型为：
  ```
  PKG_UTIL.FILE_GETPOS(
  file in integer 
  )
  RETURN BIGINT
  ```
  表33PKG_UTIL.FILE_GETPOS接口参数说明 
  | 参数   | 描述         |
  |:---|:---|
  | file | 一个打开的文件句柄。 |
     
  
- PKG_UTIL.FILE_SEEK
  根据用户指定的字节数向前或者向后调整文件指针的位置。
  PKG_UTIL.FILE_SEEK函数原型为：
  ```
  void PKG_UTIL.FILE_SEEK(
  file in integer,
  start in bigint
  )
  RETURN VOID
  ```
  表34PKG_UTIL.FILE_SEEK接口参数说明 
  | 参数    | 描述         |
  |:---|:---|
  | file  | 一个打开的文件句柄。 |
  | start | 文件偏移，字节。   |
     
  
- PKG_UTIL.FILE_CLOSE_ALL
  关闭一个会话中打开的所有的文件句柄。
  PKG_UTIL.FILE_CLOSE_ALL函数原型为：
  ```
  PKG_UTIL.FILE_CLOSE_ALL(
  )
  RETURN VOID↵
  ```
  表35PKG_UTIL.FILE_CLOSE_ALL接口参数说明 
  | 参数 | 描述 |
  |:---|:---|
  | 无  | 无  |
     
  

- PKG_UTIL.EXCEPTION_REPORT_ERROR
  抛出一个异常。
  PKG_UTIL.EXCEPTION_REPORT_ERROR函数原型为：
  ```
  PKG_UTIL.EXCEPTION_REPORT_ERROR(
  code integer，
  log text,
  flag boolean DEFAULT false
  )
  RETURN INTEGER
  ```
  表36PKG_UTIL.EXCEPTION_REPORT_ERROR接口参数说明 
  | 参数   | 描述              |
  |:---|:---|
  | code | 抛出异常所打印的错误码。    |
  | log  | 抛出异常所打印的日志提示信息。 |
  | flag | 保留字段，默认为false。  |
     
  
- PKG_UTIL.APP_READ_CLIENT_INFO
  读取client_info信息。
  PKG_UTIL.APP_READ_CLIENT_INFO函数原型为：
  ```
  PKG_UTIL.APP_READ_CLIENT_INFO(
  OUT buffer text
  )return text
  ```
  表37PKG_UTIL.APP_READ_CLIENT_INFO接口参数说明 
  | 参数     | 描述                |
  |:---|:---|
  | buffer | 返回的client_info信息。 |
     
  
- PKG_UTIL.APP_SET_CLIENT_INFO
  设置client_info信息。
  PKG_UTIL.APP_SET_CLIENT_INFO函数原型为：
  ```
  PKG_UTIL.APP_SET_CLIENT_INFO(
  str text
  )
  ```
  表38PKG_UTIL.APP_SET_CLIENT_INFO接口参数说明 
  | 参数  | 描述                 |
  |:---|:---|
  | str | 要设置的client_info信息。 |
     
  
- PKG_UTIL.LOB_CONVERTTOBLOB
  将clob转成blob，amount为要转换的长度。
  PKG_UTIL.LOB_CONVERTTOBLOB函数原型为：
  ```
  PKG_UTIL.LOB_CONVERTTOBLOB(
  dest_lob blob, 
  src_clob clob, 
  amount integer, 
  dest_offset integer, 
  src_offset integer
  )return raw
  ```
  表39PKG_UTIL.LOB_CONVERTTOBLOB接口参数说明 
  | 参数          | 描述          |
  |:---|:---|
  | dest_lob    | 目标lob。      |
  | src_clob    | 要转换的clob。   |
  | amount      | 转换的长度。      |
  | dest_offset | 目标lob的起始位置。 |
  | src_offset  | 源clob的起始位置。 |
     
  
- PKG_UTIL.LOB_CONVERTTOCLOB
  将blob转成clob，amount为要转换的长度。
  PKG_UTIL.LOB_CONVERTTOCLOB函数原型为：
  ```
  PKG_UTIL.LOB_CONVERTTOCLOB(
  dest_lob clob, 
  src_blob blob, 
  amount integer, 
  dest_offset integer, 
  src_offset integer
  )return text
  ```
  表40PKG_UTIL.LOB_CONVERTTOCLOB接口参数说明 
  | 参数          | 描述          |
  |:---|:---|
  | dest_lob    | 目标lob。      |
  | src_blob    | 要转换的blob。   |
  | amount      | 转换的长度。      |
  | dest_offset | 目标lob的起始位置。 |
  | src_offset  | 源clob的起始位置。 |
     
  
- PKG_UTIL.LOB_RAWTOTEXT
  将RAW转成TEXT。
  PKG_UTIL.LOB_RAWTOTEXT函数原型为：
  ```
  PKG_UTIL.LOB_RAWTOTEXT(
  src_lob IN BLOB
  )
  RETURN TEXT
  ```
  表41PKG_UTIL.LOB_RAWTOTEXT接口参数说明 
  | 参数      | 类型   | 入参/出参 | 是否可以为空 | 描述         |
  |:---|:---|:---|:---|:---|
  | src_lob | BLOB | IN    | 否      | 要转换的lob数据。 |
     
  
- PKG_UTIL.LOB_TEXTTORAW
  将text转成raw。
  PKG_UTIL.LOB_TEXTTORAW函数原型为：
  ```
  PKG_UTIL.LOB_TEXTTORAW(
  src_lob clob
  )
  RETURN raw
  ```
  表42PKG_UTIL.LOB_TEXTTORAW接口参数说明 
  | 参数      | 描述         |
  |:---|:---|
  | src_lob | 要转换的lob数据。 |
     
  
- PKG_UTIL.MATCH_EDIT_DISTANCE_SIMILARITY
  计算两个字符串的差别。
  PKG_UTIL.MATCH_EDIT_DISTANCE_SIMILARITY函数原型为：
  ```
  PKG_UTIL.MATCH_EDIT_DISTANCE_SIMILARITY(
  str1 text, 
  str2 text
  )
  RETURN INTEGER
  ```
  表43PKG_UTIL.MATCH_EDIT_DISTANCE_SIMILARITY接口参数说明 
  | 参数   | 描述      |
  |:---|:---|
  | str1 | 第一个字符串。 |
  | str2 | 第二个字符串。 |
     
  
- PKG_UTIL.RAW_CAST_TO_VARCHAR2
  raw类型转成varchar2。
  PKG_UTIL.RAW_CAST_TO_VARCHAR2函数原型为：
  ```
  PKG_UTIL.RAW_CAST_TO_VARCHAR2(
  str raw 
  )
  RETURN varchar2
  ```
  表44PKG_UTIL.RAW_CAST_TO_VARCHAR2接口参数说明 
  | 参数  | 描述      |
  |:---|:---|
  | str | 十六进制字符串 |
     
  
- PKG_UTIL.SESSION_CLEAR_CONTEXT
  清除session_context信息。
  PKG_UTIL.SESSION_CLEAR_CONTEXT函数原型为：
  ```
  PKG_UTIL.SESSION_CLEAR_CONTEXT(
  namespace text, 
  client_identifier text, 
  attribute text
  )
  RETURN INTEGER
  ```
  表45PKG_UTIL.SESSION_CLEAR_CONTEXT接口参数说明 
  | 参数                | 描述                                                          |
  |:---|:---|
  | namespace         | 属性的命名空间。                                                    |
  | client_identifier | client_identifier，一般与namespace相同即可，当为null时，默认修改所有namespace。 |
  | attribute         | 要清除的属性值。                                                    |
     
  
- PKG_UTIL.SESSION_SEARCH_CONTEXT
  查找属性值。
  PKG_UTIL.SESSION_SEARCH_CONTEXT函数原型为：
  ```
  PKG_UTIL.SESSION_SEARCH_CONTEXT(
  namespace text, 
  attribute text
  )
  RETURN INTEGER
  ```
  表46PKG_UTIL.SESSION_SEARCH_CONTEXT接口参数说明 
  | 参数        | 描述       |
  |:---|:---|
  | namespace | 属性的命名空间。 |
  | attribute | 要清除的属性值。 |
     
  
- PKG_UTIL.SESSION_SET_CONTEXT
  设置属性值。
  PKG_UTIL.SESSION_SET_CONTEXT函数原型为：
  ```
  PKG_UTIL.SESSION_SET_CONTEXT(
  namespace text, 
  attribute text,
  value text
  )
  RETURN INTEGER
  ```
  表47PKG_UTIL.SESSION_SET_CONTEXT接口参数说明 
  | 参数        | 描述      |
  |:---|:---|
  | namespace | 属性的命名空间 |
  | attribute | 要设置的属性  |
  | value     | 属性对应的值  |
     
  
- PKG_UTIL.UTILITY_GET_TIME
  打印UNIX时间戳。
  PKG_UTIL.UTILITY_GET_TIME函数原型为：
  ```
  PKG_UTIL.UTILITY_GET_TIME()
  RETURN bigint
  ```
  
- PKG_UTIL.UTILITY_FORMAT_ERROR_BACKTRACE
  查看存储过程的错误堆栈。
  PKG_UTIL.UTILITY_FORMAT_ERROR_BACKTRACE函数原型为：
  ```
  PKG_UTIL.UTILITY_FORMAT_ERROR_BACKTRACE()
  RETURN text
  ```
  
- PKG_UTIL.UTILITY_FORMAT_ERROR_STACK
  查看存储过程的报错信息。
  PKG_UTIL.UTILITY_FORMAT_ERROR_STACK函数原型为：
  ```
  PKG_UTIL.UTILITY_FORMAT_ERROR_STACK()
  RETURN text
  ```
  
- PKG_UTIL.UTILITY_FORMAT_CALL_STACK
  查看存储过程调用堆栈。
  PKG_UTIL.UTILITY_FORMAT_CALL_STACK函数原型为：
  ```
  PKG_UTIL.UTILITY_FORMAT_CALL_STACK()
  RETURN text
  ```
  
 
