
# DBE_SQL
#### 数据类型介绍
- DBE_SQL.DESC_REC 该类型是复合类型，用来存储SQL_DESCRIBE_COLUMNS接口中的描述信息。
  DBE_SQL.DESC_REC类型的原型为：
  ```
  CREATE TYPE DBE_SQL.DESC_REC AS (
        col_type            int,
        col_max_len         int,
        col_name            VARCHAR2(32),
        col_name_len        int,
        col_schema_name     VARCHAR2(32),
        col_schema_name_len int,
        col_precision       int,
        col_scale           int,
        col_charsetid       int,
        col_charsetform     int,
        col_null_ok         BOOLEAN
  );
  ```
  
- DBE_SQL.DESC_TAB 该类型是DESC_REC的TABLE类型，通过TABLE OF语法实现。
  DBE_SQL.DESC_TAB类型的原型为：
  ```
  CREATE TYPE DBE_SQL.DESC_TAB AS TABLE OF DBE_SQL.DESC_REC INDEX BY INTEGER;
  ```
  
- DBE_SQL.DATE_TABLE 该类型是DATE的TABLE类型，通过TABLE OF语法实现。
  DBE_SQL.DATE_TABLE类型的原型为：
  ```
  CREATE TYPE DBE_SQL.DATE_TABLE AS TABLE OF DATE INDEX BY INTEGER;
  ```
  
- DBE_SQL.NUMBER_TABLE 该类型是NUMBER的TABLE类型，通过TABLE OF语法实现。
  DBE_SQL.NUMBER_TABLE类型的原型为：
  ```
  CREATE TYPE DBE_SQL.NUMBER_TABLE AS TABLE OF NUMBER INDEX BY INTEGER;
  ```
  
- DBE_SQL.VARCHAR2_TABLE 该类型是VARCHAR2的TABLE类型，通过TABLE OF语法实现。
  DBE_SQL.VARCHAR2_TABLE类型的原型为：
  ```
  CREATE TYPE DBE_SQL.VARCHAR2_TABLE AS TABLE OF VARCHAR2(32767) INDEX BY INTEGER;
  ```
  
- DBE_SQL.BLOB_TABLE 该类型是BLOB的TABLE类型，通过TABLE OF语法实现。
  DBE_SQL.BLOB_TABLE类型的原型为：
  ```
  CREATE TYPE DBE_SQL.BLOB_TABLE AS TABLE OF BLOB INDEX BY INTEGER;
  ```
  
 
#### 接口介绍
高级功能包DBE_SQL支持的接口请参见[表1]。
 表1DBE_SQL 
| 接口名称                                                                                                                                                                                           | 描述                            |
|:---|:---|
| [DBE_SQL.REGISTER_CONTEXT](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0820.html#ZH-CN_TOPIC_0000002527986302__zh-cn_topic_0000002526896726_li1531162015334)        | 打开一个游标。                       |
| [DBE_SQL.SQL_UNREGISTER_CONTEXT](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0820.html#ZH-CN_TOPIC_0000002527986302__zh-cn_topic_0000002526896726_li156795412510)   | 关闭一个已打开的游标。                   |
| [DBE_SQL.SQL_SET_SQL](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0820.html#ZH-CN_TOPIC_0000002527986302__zh-cn_topic_0000002526896726_li2228125392012)             | 向游标传递一组SQL语句或匿名块。             |
| [DBE_SQL.SQL_RUN](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0820.html#ZH-CN_TOPIC_0000002527986302__zh-cn_topic_0000002526896726_li55721712815)                   | 执行给定游标中的SQL语句或匿名块。            |
| [DBE_SQL.NEXT_ROW](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0820.html#ZH-CN_TOPIC_0000002527986302__zh-cn_topic_0000002526896726_li126241517289)                 | 读取游标一行数据。                     |
| [DBE_SQL.SET_RESULT_TYPE](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0820.html#ZH-CN_TOPIC_0000002527986302__zh-cn_topic_0000002526896726_li93441630193318)        | 动态定义一个列。                      |
| [DBE_SQL.SET_RESULT_TYPE_CHAR](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0820.html#ZH-CN_TOPIC_0000002527986302__zh-cn_topic_0000002526896726_li15241105533618)   | 动态定义一个char类型的列。               |
| [DBE_SQL.SET_RESULT_TYPE_INT](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0820.html#ZH-CN_TOPIC_0000002527986302__zh-cn_topic_0000002526896726_li1061171414373)     | 动态定义一个int类型的列。                |
| [DBE_SQL.SET_RESULT_TYPE_LONG](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0820.html#ZH-CN_TOPIC_0000002527986302__zh-cn_topic_0000002526896726_li3604521153710)    | 动态定义一个long类型的列。               |
| [DBE_SQL.SET_RESULT_TYPE_RAW](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0820.html#ZH-CN_TOPIC_0000002527986302__zh-cn_topic_0000002526896726_li17405103123711)    | 动态定义一个raw类型的列。                |
| [DBE_SQL.SET_RESULT_TYPE_TEXT](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0820.html#ZH-CN_TOPIC_0000002527986302__zh-cn_topic_0000002526896726_li163691742193714)  | 动态定义一个text类型的列。               |
| [DBE_SQL.SET_RESULT_TYPE_UNKNOWN](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0820.html#ZH-CN_TOPIC_0000002527986302__zh-cn_topic_0000002526896726_li8476651143718) | 动态定义一个未知列（类型不识别时入此接口）。        |
| [DBE_SQL.GET_RESULT](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0820.html#ZH-CN_TOPIC_0000002527986302__zh-cn_topic_0000002526896726_li182631611152817)            | 读取一个已动态定义的列值。                 |
| [DBE_SQL.GET_RESULT_CHAR](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0820.html#ZH-CN_TOPIC_0000002527986302__zh-cn_topic_0000002526896726_li55491765289)           | 读取一个已动态定义的列值（指定char类型）。       |
| [DBE_SQL.GET_RESULT_INT](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0820.html#ZH-CN_TOPIC_0000002527986302__zh-cn_topic_0000002526896726_li169604123012)           | 读取一个已动态定义的列值（指定int类型）。        |
| [DBE_SQL.GET_RESULT_LONG](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0820.html#ZH-CN_TOPIC_0000002527986302__zh-cn_topic_0000002526896726_li9209325173117)         | 读取一个已动态定义的列值（指定long类型）。       |
| [DBE_SQL.GET_RESULT_RAW](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0820.html#ZH-CN_TOPIC_0000002527986302__zh-cn_topic_0000002526896726_li1644815212328)          | 读取一个已动态定义的列值（指定raw类型）。        |
| [DBE_SQL.GET_RESULT_TEXT](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0820.html#ZH-CN_TOPIC_0000002527986302__zh-cn_topic_0000002526896726_li5561542153219)         | 读取一个已动态定义的列值（指定text类型）。       |
| [DBE_SQL.GET_RESULT_UNKNOWN](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0820.html#ZH-CN_TOPIC_0000002527986302__zh-cn_topic_0000002526896726_li13946783337)        | 读取一个已动态定义的列值（类型不识别时入此接口）。     |
| [DBE_SQL.DBE_SQL_GET_RESULT_CHAR]                                                                                 | 读取一个已动态定义的列值（指定char类型）。       |
| [DBE_SQL.DBE_SQL_GET_RESULT_LONG]                                                                                | 读取一个已动态定义的列值（指定long类型）。       |
| [DBE_SQL.DBE_SQL_GET_RESULT_RAW]                                                                                  | 读取一个已动态定义的列值（指定raw类型）。        |
| [DBE_SQL.IS_ACTIVE](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0820.html#ZH-CN_TOPIC_0000002527986302__zh-cn_topic_0000002526896726_li17449205852910)              | 检查游标是否已打开。                    |
| [DBE_SQL.LAST_ROW_COUNT]                                                                                          | 返回获取行数的累积计数。                  |
| [DBE_SQL.RUN_AND_NEXT]                                                                                             | 在游标上执行一组动态定义操作后，读取游标数据。       |
| [DBE_SQL.SQL_BIND_VARIABLE]                                                                                      | 根据语句中的变量，绑定一个值到该变量。           |
| [DBE_SQL.SQL_BIND_ARRAY]                                                                                          | 根据语句中的变量，绑定一组值到该变量。           |
| [DBE_SQL.SET_RESULT_TYPE_INTS]                                                                                   | 动态定义一个int数组类型的列。              |
| [DBE_SQL.SET_RESULT_TYPE_TEXTS]                                                                                  | 动态定义一个text数组类型的列。             |
| [DBE_SQL.SET_RESULT_TYPE_RAWS]                                                                                   | 动态定义一个raw数组类型的列。              |
| [DBE_SQL.SET_RESULT_TYPE_BYTEAS]                                                                                 | 动态定义一个bytea数组类型的列。            |
| [DBE_SQL.SET_RESULT_TYPE_CHARS]                                                                                    | 动态定义一个char数组类型的列。             |
| [DBE_SQL.SET_RESULTS_TYPE]                                                                                          | 动态定义一个数组类型的列。                 |
| [DBE_SQL.GET_RESULTS_INT]                                                                                          | 读取一个已动态定义的列值（指定int数组类型）。      |
| [DBE_SQL.GET_RESULTS_TEXT]                                                                                          | 读取一个已动态定义的列值（指定text数组类型）。     |
| [DBE_SQL.GET_RESULTS_RAW]                                                                                         | 读取一个已动态定义的列值（指定raw数组类型）。      |
| [DBE_SQL.GET_RESULTS_BYTEA]                                                                                          | 读取一个已动态定义的列值（指定bytea数组类型）。    |
| [DBE_SQL.GET_RESULTS_CHAR]                                                                                         | 读取一个已动态定义的列值（指定char数组类型）。     |
| [DBE_SQL.GET_RESULTS]                                                                                              | 读取一个已动态定义的列值。                 |
| [DBE_SQL.DESCRIBE_COLUMNS]                                                                                         | 描述游标读取的列信息。                   |
| [DBE_SQL.SQL_DESCRIBE_COLUMNS]                                                                                    | 描述游标读取的列信息。                   |
| [DBE_SQL.BIND_VARIABLE]                                                                                           | 绑定参数接口。                       |
| [DBE_SQL.SQL_SET_RESULTS_TYPE_C]                                                                                  | 动态定义一个数组类型的列。                 |
| [DBE_SQL.SQL_GET_VALUES_C]                                                                                          | 读取一个已动态定义的列值。                 |
| [DBE_SQL.GET_VARIABLE_RESULT]                                                                                      | 读取一个SQL语句执行后的返回值。             |
| [DBE_SQL.GET_VARIABLE_RESULT_CHAR]                                                                                | 读取一个SQL语句执行后的返回值（指定char类型）。   |
| [DBE_SQL.GET_VARIABLE_RESULT_RAW]                                                                                 | 读取一个SQL语句执行后的返回值（指定raw类型）。    |
| [DBE_SQL.GET_VARIABLE_RESULT_TEXT]                                                                                 | 读取一个SQL语句执行后的返回值（指定text类型）。   |
| [DBE_SQL.GET_VARIABLE_RESULT_INT]                                                                                  | 读取一个SQL语句执行后的返回值（指定int类型）。    |
| [DBE_SQL.GET_ARRAY_RESULT_TEXT]                                                                                     | 读取一个SQL语句执行后的返回值（指定text数组类型）。 |
| [DBE_SQL.GET_ARRAY_RESULT_RAW]                                                                                   | 读取一个SQL语句执行后的返回值（指定raw数组类型）。  |
| [DBE_SQL.GET_ARRAY_RESULT_CHAR]                                                                                   | 读取一个SQL语句执行后的返回值（指定char数组类型）。 |
| [DBE_SQL.GET_ARRAY_RESULT_INT]                                                                                    | 读取一个SQL语句执行后的返回值（指定int数组类型）。  |
   
![](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/public_sys-resources/note_3.0-zh-cn.png)
- 建议使用dbe_sql.set_result_type及dbe_sql.get_result定义参数列。
- 当结果集大于work_mem设定值时会触发结果集临时下盘，但最大阈值不超过512MB。
 
- DBE_SQL.REGISTER_CONTEXT 该函数用来打开一个游标，是后续dbe_sql各项操作的前提。该函数不传入任何参数，内部自动递增生成游标ID，并作为返回值返回给integer定义的变量。
  ![](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/public_sys-resources/caution_3.0-zh-cn.png)
  DBE_SQL打开的游标是会话级的变量，不支持跨会话调用打开的游标（如自治事务），如果调用跨会话的游标，那么行为不可预知。
  DBE_SQL.REGISTER_CONTEXT函数原型为：
  ```
  DBE_SQL.REGISTER_CONTEXT(
  )
  RETURN INTEGER;
  ```
  
- DBE_SQL.SQL_UNREGISTER_CONTEXT 该函数用来关闭一个游标，是dbe_sql各项操作的结束。如果在存储过程结束时没有调用该函数，则该游标占用的内存仍然会保存，因此关闭游标非常重要。由于异常情况的发生会中途退出存储过程，导致游标未能关闭，因此建议如果存储过程中有异常处理，应将该接口包含在内。
  DBE_SQL.SQL_UNREGISTER_CONTEXT函数原型为：
  ```
  DBE_SQL.SQL_UNREGISTER_CONTEXT(
       context_id    IN INT
  )
  RETURN INTEGER;
  ```
  表2DBE_SQL.SQL_UNREGISTER_CONTEXT接口说明 
  | 参数名称       | 类型  | 入参/出参 | 是否可以为空 | 描述          |
  |:---|:---|:---|:---|:---|
  | context_id | INT | IN    | 否      | 打算关闭的游标ID号。 |
     
  

- DBE_SQL.SQL_SET_SQL 该函数用来解析给定游标的SQL语句或匿名块。目前语句参数仅可通过text类型传递，长度不大于1GB。
  DBE_SQL.SQL_SET_SQL函数的原型为：
  ```
  DBE_SQL.SQL_SET_SQL(
      context_id    IN INT,
      query_string  IN TEXT,
      language_flag IN INT
  )
  RETURN BOOLEAN;
  ```
  表3DBE_SQL.SQL_SET_SQL接口说明 
  | 参数名称          | 类型   | 入参/出参 | 是否可以为空 | 描述                                      |
  |:---|:---|:---|:---|:---|
  | context_id    | INT  | IN    | 否      | 执行查询语句解析的游标ID。                          |
  | query_string  | TEXT | IN    | 否      | 执行的查询语句。                                |
  | language_flag | INT  | IN    | 否      | 版本语言号，指定SQL语句不同版本的行为，1为非兼容版本，2为兼容ORA版本。 |
     
  
- DBE_SQL.SQL_RUN 该函数用来执行一个给定的游标。该函数接收一个游标ID，执行游标中的SQL语句或匿名块。
  DBE_SQL.SQL_RUN函数的原型为：
  ```
  DBE_SQL.SQL_RUN(
      context_id    IN INT,
  )
  RETURN INTEGER;
  ```
  表4DBE_SQL.SQL_RUN接口说明 
  | 参数名称       | 类型  | 入参/出参 | 是否可以为空 | 描述             |
  |:---|:---|:---|:---|:---|
  | context_id | INT | IN    | 否      | 执行查询语句解析的游标ID。 |
     
  
- DBE_SQL.NEXT_ROW 该函数返回符合查询条件的数据行数，每一次运行该接口都会获取到新的行数的集合，直到数据读取完毕获取不到新行为止。
  DBE_SQL.NEXT_ROW函数的原型为：
  ```
  DBE_SQL.NEXT_ROW(
      context_id    IN INT,
  )
  RETURN INTEGER;
  ```
  表5DBE_SQL.NEXT_ROW接口说明 
  | 参数名称       | 类型  | 入参/出参 | 是否可以为空 | 描述       |
  |:---|:---|:---|:---|:---|
  | context_id | INT | IN    | 否      | 执行的游标ID。 |
     
  
- DBE_SQL.SET_RESULT_TYPE 该函数用来定义从给定游标返回的列，该接口只能应用于SELECT定义的游标中。定义的列通过查询列表的相对位置来标识，传入变量的数据类型决定了该列被定义的类型。
  DBE_SQL.SET_RESULT_TYPE函数的原型为：
  ```
  DBE_SQL.SET_RESULT_TYPE(
      context_id IN INT,
      pos        IN INT,
      column_ref IN ANYELEMENT,
      maxsize    IN INT default 1024
  )
  RETURN INTEGER;
  ```
  表6DBE_SQL.SET_RESULT_TYPE接口说明 
  | 参数名称       | 类型         | 入参/出参 | 是否可以为空 | 描述                           |
  |:---|:---|:---|:---|:---|
  | context_id | INT        | IN    | 否      | 执行的游标ID。                     |
  | pos        | INT        | IN    | 否      | 查询列在返回结果中的相对位置，起始为1。         |
  | column_ref | ANYELEMENT | IN    | 否      | 任意类型的变量，可根据变量类型选择适当的接口动态定义列。 |
  | maxsize    | INT        | IN    | 是      | 定义列返回类型长度。                   |
     
  
- DBE_SQL.SET_RESULT_TYPE_CHAR 该函数用来定义从给定游标返回的CHAR类型的列，该接口只能应用于SELECT定义的游标中。定义的列通过查询列表的相对位置来标识，传入变量的数据类型决定了该列被定义的类型。
  DBE_SQL.SET_RESULT_TYPE_CHAR函数的原型为：
  ```
  DBE_SQL.SET_RESULT_TYPE_CHAR(
      context_id  IN INT,
      pos         IN INT,
      column_ref  IN TEXT,
      column_size IN INT
  )
  RETURN INTEGER;
  ```
  表7DBE_SQL.SET_RESULT_TYPE_CHAR接口说明 
  | 参数名称        | 类型   | 入参/出参 | 是否可以为空 | 描述             |
  |:---|:---|:---|:---|:---|
  | context_id  | INT  | IN    | 否      | 执行的游标ID。       |
  | pos         | INT  | IN    | 否      | 动态定义列在查询中的位置。  |
  | column_ref  | TEXT | IN    | 否      | 需要定义的某类型的参数变量。 |
  | column_size | INT  | IN    | 否      | 动态定义列长度。       |
     
  
- DBE_SQL.SET_RESULT_TYPE_INT 该函数用来定义从给定游标返回的INT类型的列，该接口只能应用于SELECT定义的游标中。定义的列通过查询列表的相对位置来标识，传入变量的数据类型决定了该列被定义的类型。
  DBE_SQL.SET_RESULT_TYPE_INT函数的原型为：
  ```
  DBE_SQL.SET_RESULT_TYPE_INT(
      context_id IN INT,
      pos        IN INT
  )
  RETURN INTEGER;
  ```
  表8DBE_SQL.SET_RESULT_TYPE_INT接口说明 
  | 参数名称       | 类型  | 入参/出参 | 是否可以为空 | 描述            |
  |:---|:---|:---|:---|:---|
  | context_id | INT | IN    | 否      | 执行的游标ID。      |
  | pos        | INT | IN    | 否      | 动态定义列在查询中的位置。 |
     
  
- DBE_SQL.SET_RESULT_TYPE_LONG 该函数用来定义从给定游标返回的长列类型（非数据类型long）的列，该接口只能应用于SELECT定义的游标中。定义的列通过查询列表的相对位置来标识，传入变量的数据类型决定了该列被定义的类型。长列的大小限制为1G。
  DBE_SQL.SET_RESULT_TYPE_LONG函数的原型为：
  ```
  DBE_SQL.SET_RESULT_TYPE_LONG(
      context_id IN INT,
      pos        IN INT
  )
  RETURN INTEGER;
  ```
  表9DBE_SQL.SET_RESULT_TYPE_LONG接口说明 
  | 参数名称       | 类型  | 入参/出参 | 是否可以为空 | 描述            |
  |:---|:---|:---|:---|:---|
  | context_id | INT | IN    | 否      | 执行的游标ID。      |
  | pos        | INT | IN    | 否      | 动态定义列在查询中的位置。 |
     
  
- DBE_SQL.SET_RESULT_TYPE_RAW 该函数用来定义从给定游标返回的RAW类型的列，该接口只能应用于SELECT定义的游标中。定义的列通过查询列表的相对位置来标识，传入变量的数据类型决定了该列被定义的类型。
  DBE_SQL.SET_RESULT_TYPE_RAW函数的原型为：
  ```
  DBE_SQL.SET_RESULT_TYPE_RAW(
      context_id  IN INT,
      pos         IN INT,
      column_ref  IN BYTEA,
      column_size IN INT
  )
  RETURN INTEGER;
  ```
  表10DBE_SQL.SET_RESULT_TYPE_RAW接口说明 
  | 参数名称        | 类型    | 入参/出参 | 是否可以为空 | 描述            |
  |:---|:---|:---|:---|:---|
  | context_id  | INT   | IN    | 否      | 执行的游标ID。      |
  | pos         | INT   | IN    | 否      | 动态定义列在查询中的位置。 |
  | column_ref  | BYTEA | IN    | 否      | RAW类型的参数变量。   |
  | column_size | INT   | IN    | 否      | 列的长度。         |
     
  
- DBE_SQL.SET_RESULT_TYPE_TEXT 该函数用来定义从给定游标返回的TEXT类型的列，该接口只能应用于SELECT定义的游标中。定义的列通过查询列表的相对位置来标识，传入变量的数据类型决定了该列被定义的类型。
  DBE_SQL.SET_RESULT_TYPE_TEXT函数的原型为：
  ```
  DBE_SQL.DEFINE_COLUMN_CHAR(
      context_id IN INT,
      pos        IN INT,
      maxsize    IN INT
  )
  RETURN INTEGER;
  ```
  表11DBE_SQL.SET_RESULT_TYPE_TEXT接口说明 
  | 参数名称       | 类型 | 入参/出参 | 是否可以为空 | 描述              |
  |:---|:---|:---|:---|:---|
  | context_id | IN | IN    | 否      | 执行的游标ID。        |
  | pos        | IN | IN    | 否      | 动态定义列在查询中的位置。   |
  | maxsize    | IN | IN    | 否      | 定义的TEXT类型的最大长度。 |
     
  
- DBE_SQL.SET_RESULT_TYPE_UNKNOWN 该函数用来处理从给定游标返回的未知数据类型的列，该接口仅用于类型不识别时的报错退出。
  DBE_SQL.SET_RESULT_TYPE_UNKNOWN函数的原型为：
  ```
  DBE_SQL.SET_RESULT_TYPE_UNKNOWN(
      context_id IN INT,
      pos        IN INT,
      col_type   IN TEXT
  )
  RETURN INTEGER;
  ```
  表12DBE_SQL.SET_RESULT_TYPE_UNKNOWN接口说明 
  | 参数名称       | 类型   | 入参/出参 | 是否可以为空 | 描述            |
  |:---|:---|:---|:---|:---|
  | context_id | INT  | IN    | 否      | 执行的游标ID。      |
  | pos        | INT  | IN    | 否      | 动态定义列在查询中的位置。 |
  | col_type   | TEXT | IN    | 否      | 动态定义的参数。      |
     
  
- DBE_SQL.GET_RESULT 该存储过程用来返回给定游标给定位置的游标元素值，该接口访问的是DBE_SQL.NEXT_ROW获取的数据。
  DBE_SQL.GET_RESULT存储过程的原型为：
  ```
  DBE_SQL.GET_RESULT(
      context_id   IN INT,
      pos          IN INT,
      column_value INOUT ANYELEMENT
  );
  ```
  表13DBE_SQL.GET_RESULT接口说明 
  | 参数名称         | 类型         | 入参/出参 | 是否可以为空 | 描述                   |
  |:---|:---|:---|:---|:---|
  | context_id   | INT        | IN    | 否      | 执行的游标ID。             |
  | pos          | INT        | IN    | 否      | 查询列在返回结果中的相对位置，起始为1。 |
  | column_value | ANYELEMENT | INOUT | 否      | 定义的列的返回值。            |
     
  
- DBE_SQL.GET_RESULT_CHAR 该存储过程用来返回给定游标给定位置的游标CHAR类型的值，该接口访问的是DBE_SQL.NEXT_ROW获取的数据。
  DBE_SQL.GET_RESULT_CHAR存储过程的原型为：
  ```
  DBE_SQL.GET_RESULT_CHAR(
      context_id    IN    INT,
      pos           IN    INT,
      tr            INOUT CHAR，
      err           INOUT NUMERIC DEFAULT 0,
      actual_length INOUT INT DEFAULT 1024
  );
  ```
  表14DBE_SQL.GET_RESULT_CHAR接口说明 
  | 参数名称          | 类型      | 入参/出参 | 是否可以为空 | 描述                                     |
  |:---|:---|:---|:---|:---|
  | context_id    | INT     | IN    | 否      | 执行的游标ID。                               |
  | pos           | INT     | IN    | 否      | 动态定义列在查询中的位置。                          |
  | tr            | CHAR    | INOUT | 否      | 返回值。                                   |
  | err           | NUMERIC | INOUT | 是      | 错误号。传出参数，须传入变量做参数（默认值为0）。目前未实现，固定传出-1。 |
  | actual_length | INT     | INOUT | 是      | 返回值的实际长度，默认值为1024。                     |
     
  
- DBE_SQL.GET_RESULT_INT
  该函数用来返回给定游标给定位置的游标INT类型的值，该接口访问的是DBE_SQL.NEXT_ROW获取的数据。DBE_SQL.GET_RESULT_INT函数的原型为：
  ```
  DBE_SQL.GET_RESULT_INT(
      context_id IN    INT,
      pos        IN    INT
  )
  RETURN INTEGER;
  ```
  表15DBE_SQL.GET_RESULT_INT接口说明 
  | 参数名称       | 类型  | 入参/出参 | 是否可以为空 | 描述            |
  |:---|:---|:---|:---|:---|
  | context_id | INT | IN    | 否      | 执行的游标ID。      |
  | pos        | INT | IN    | 否      | 动态定义列在查询中的位置。 |
     
  
- DBE_SQL.GET_RESULT_LONG 该存储过程用来返回给定游标给定位置的游标长列（非long/bigint整型）类型的值，该接口访问的是DBE_SQL.NEXT_ROW获取的数据。
  DBE_SQL.GET_RESULT_LONG存储过程的原型为：
  ```
  DBE_SQL.GET_RESULT_LONG(
      context_id IN    INT,
      pos        IN    INT,
      lgth       IN    INT,
      off_set    IN    INT,
      vl         INOUT TEXT，
      vl_length  INOUT INT
  );
  ```
  表16DBE_SQL.GET_RESULT_LONG接口说明 
  | 参数名称       | 类型   | 入参/出参 | 是否可以为空 | 描述            |
  |:---|:---|:---|:---|:---|
  | context_id | INT  | IN    | 否      | 执行的游标ID。      |
  | pos        | INT  | IN    | 否      | 动态定义列在查询中的位置。 |
  | lgth       | INT  | IN    | 否      | 返回值的长度。       |
  | off_set    | INT  | IN    | 否      | 返回值的起始位置。     |
  | vl         | TEXT | INOUT | 否      | 返回值。          |
  | vl_length  | INT  | INOUT | 否      | 实际返回值的长度。     |
     
  
- DBE_SQL.GET_RESULT_RAW 该存储过程用来返回给定游标给定位置的游标RAW类型的值，该接口访问的是DBE_SQL.NEXT_ROW获取的数据。
  DBE_SQL.GET_RESULT_RAW存储过程的原型为：
  ```
  DBE_SQL.GET_RESULT_RAW(
      context_id    IN    INT,
      pos           IN    INT,
      tr            INOUT BYTEA，
      err           INOUT NUMERIC DEFAULT 0,
      actual_length INOUT INT DEFAULT 1024
  );
  ```
  表17DBE_SQL.GET_RESULT_RAW接口说明 
  | 参数名称          | 类型      | 入参/出参 | 是否可以为空 | 描述                                     |
  |:---|:---|:---|:---|:---|
  | context_id    | INT     | IN    | 否      | 执行的游标ID。                               |
  | pos           | INT     | IN    | 否      | 动态定义列在查询中的位置。                          |
  | tr            | BYTEA   | INOUT | 否      | 返回的列值。                                 |
  | err           | NUMERIC | INOUT | 否      | 错误号。传出参数，须传入变量做参数（默认值为0）。目前未实现，固定传出-1。 |
  | actual_length | INT     | INOUT | 否      | 返回值的实际长度，不能长于此值，否则截断，默认值为1024。         |
     
  
- DBE_SQL.GET_RESULT_TEXT 该函数用来返回给定游标给定位置的游标TEXT类型的值，该接口访问的是DBE_SQL.NEXT_ROW获取的数据。
  DBE_SQL.GET_RESULT_TEXT函数的原型为：
  ```
  DBE_SQL.GET_RESULT_TEXT(
      context_id IN INT,
      pos        IN INT
  )
  RETURN TEXT;
  ```
  表18DBE_SQL.GET_RESULT_TEXT接口说明 
  | 参数名称       | 类型  | 入参/出参 | 是否可以为空 | 描述            |
  |:---|:---|:---|:---|:---|
  | context_id | INT | IN    | 否      | 执行的游标ID。      |
  | pos        | INT | IN    | 否      | 动态定义列在查询中的位置。 |
     
  
- DBE_SQL.GET_RESULT_UNKNOWN 该函数用来返回给定游标给定位置的游标未知类型的值，该接口为类型不支持时的报错处理接口。
  DBE_SQL.GET_RESULT_UNKNOWN函数的原型为：
  ```
  DBE_SQL.GET_RESULT_UNKNOWN(
      context_id IN INT,
      pos        IN INT,
      col_type   IN TEXT
  )
  RETURN INTEGER;
  ```
  表19DBE_SQL.GET_RESULT_UNKNOWN接口说明 
  | 参数名称       | 类型   | 入参/出参 | 是否可以为空 | 描述            |
  |:---|:---|:---|:---|:---|
  | context_id | INT  | IN    | 否      | 执行的游标ID。      |
  | pos        | INT  | IN    | 否      | 动态定义列在查询中的位置。 |
  | col_type   | TEXT | IN    | 否      | 返回的参数类型。      |
     
  
- DBE_SQL.DBE_SQL_GET_RESULT_CHAR
  该函数用来返回给定游标给定位置的游标CHAR类型的值，该接口访问的是DBE_SQL.NEXT_ROW获取的数据。和DBE_SQL.GET_RESULT_CHAR的区别是，不设置返回值长度，返回整个字符串。
  DBE_SQL.DBE_SQL_GET_RESULT_CHAR函数的原型为：
  ```
  DBE_SQL.DBE_SQL_GET_RESULT_CHAR(
      context_id    IN INT,
      pos           IN INT
  )
  RETURN CHARACTER;
  ```
  表20DBE_SQL.DBE_SQL_GET_RESULT_CHAR接口说明 
  | 参数名称       | 类型  | 入参/出参 | 是否可以为空 | 描述            |
  |:---|:---|:---|:---|:---|
  | context_id | INT | IN    | 否      | 执行的游标ID。      |
  | pos        | INT | IN    | 否      | 动态定义列在查询中的位置。 |
     
  
- DBE_SQL.DBE_SQL_GET_RESULT_LONG
  该函数用来返回给定游标给定位置的游标长列（非long/bigint整型）类型的值，该接口访问的是DBE_SQL.NEXT_ROW获取的数据。
  和DBE_SQL.GET_RESULT_LONG的区别是，不设置返回值长度，返回整个BIGINT值。
  DBE_SQL.DBE_SQL_GET_RESULT_LONG函数的原型为：
  ```
  DBE_SQL.DBE_SQL_GET_RESULT_LONG(
      context_id    IN INT,
      pos           IN INT
  )
  RETURN BIGINT;
  ```
  表21DBE_SQL.DBE_SQL_GET_RESULT_LONG接口说明 
  | 参数名称       | 类型  | 入参/出参 | 是否可以为空 | 描述            |
  |:---|:---|:---|:---|:---|
  | context_id | INT | IN    | 否      | 执行的游标ID。      |
  | pos        | INT | IN    | 否      | 动态定义列在查询中的位置。 |
     
  
- DBE_SQL.DBE_SQL_GET_RESULT_RAW
  该函数用来返回给定游标给定位置的游标RAW类型的值，该接口访问的是DBE_SQL.NEXT_ROW获取的数据。
  和函数DBE_SQL.GET_RESULT_RAW的区别是，不设置返回值长度，返回整个字符串。
  DBE_SQL.DBE_SQL_GET_RESULT_RAW函数的原型为：
  ```
  DBE_SQL.DBE_SQL_GET_RESULT_RAW(
      context_id    IN    INT,
      pos           IN    INT
  )
  RETURN RAW;
  ```
  表22DBE_SQL.GET_RESULT_RAW接口说明 
  | 参数名称       | 类型  | 入参/出参 | 是否可以为空 | 描述            |
  |:---|:---|:---|:---|:---|
  | context_id | INT | IN    | 否      | 执行的游标ID。      |
  | pos        | INT | IN    | 否      | 动态定义列在查询中的位置。 |
     
  
- DBE_SQL.IS_ACTIVE 该函数用来返回游标的当前状态：游标处于打开、解析、执行、定义时为TRUE，关闭后为FALSE，未知时报错，其余默认为关闭。
  DBE_SQL.IS_ACTIVE函数的原型为：
  ```
  DBE_SQL.IS_ACTIVE(
      context_id    IN    INT
  )
  RETURN BOOLEAN;
  ```
  表23DBE_SQL.IS_ACTIVE接口说明 
  | 参数名称       | 类型  | 入参/出参 | 是否可以为空 | 描述        |
  |:---|:---|:---|:---|:---|
  | context_id | INT | IN    | 否      | 被查询的游标ID。 |
     
  

- DBE_SQL.LAST_ROW_COUNT
  该函数用来返回最近一次NEXT_ROW执行后，获取的数据行数的累积计数。
  DBE_SQL.LAST_ROW_COUNT函数的原型为：
  ```
  DBE_SQL.LAST_ROW_COUNT(
  )
  RETURN INTEGER;
  ```
  
- DBE_SQL.RUN_AND_NEXT
  该函数的功能等同于在调用SQL_RUN后接着调用NEXT_ROW。
  DBE_SQL.RUN_AND_NEXT函数的原型为：
  ```
  DBE_SQL.RUN_AND_NEXT(
      context_id IN INT
  )
  RETURNS INTEGER;
  ```
  表24DBE_SQL.RUN_AND_NEXT接口说明 
  | 参数名称       | 类型  | 入参/出参 | 是否可以为空 | 描述             |
  |:---|:---|:---|:---|:---|
  | context_id | INT | IN    | 否      | 执行查询语句解析的游标ID。 |
     
  
- DBE_SQL.SQL_BIND_VARIABLE
  该函数用来绑定一个参数到SQL语句，当执行SQL语句时，会根据该绑定的值来执行。
  DBE_SQL.SQL_BIND_VARIABLE函数的原型为：
  ```
  DBE_SQL.SQL_BIND_VARIABLE(
      context_id     IN int,
      query_string   IN text,
      language_flag  IN anyelement,
      out_value_size IN int default null
  )
  RETURNS void;
  ```
  表25DBE_SQL.SQL_BIND_VARIABLE接口说明 
  | 参数名称           | 类型         | 入参/出参 | 是否可以为空 | 描述               |
  |:---|:---|:---|:---|:---|
  | context_id     | INT        | IN    | 否      | 被查询的游标ID。        |
  | query_string   | TEXT       | IN    | 否      | 绑定的变量名。          |
  | language_flag  | ANYELEMENT | IN    | 否      | 绑定的值。            |
  | out_value_size | INT        | IN    | 是      | 返回值的大小，默认值为NULL。 |
     
  
- DBE_SQL.SQL_BIND_ARRAY
  该函数用来绑定一组参数到SQL语句，当执行SQL语句时，会根据该绑定的数组来执行。
  DBE_SQL.SQL_BIND_ARRAY函数的原型为：
  ```
  DBE_SQL.SQL_BIND_ARRAY(
      context_id   IN int,
      query_string IN text,
      value        IN anyarray
  )
  RETURNS void;
  DBE_SQL.SQL_BIND_ARRAY(
      context_id   IN int,
      query_string IN text,
      value        IN anyarray,
      lower_index  IN int, 
      higher_index IN int
  )
  RETURNS void;
  ```
  表26DBE_SQL.SQL_BIND_ARRAY接口说明 
  | 参数名称         | 类型       | 入参/出参 | 是否可以为空 | 描述         |
  |:---|:---|:---|:---|:---|
  | context_id   | INT      | IN    | 否      | 被查询的游标ID。  |
  | query_string | TEXT     | IN    | 否      | 绑定的变量名。    |
  | value        | ANYARRAY | IN    | 否      | 绑定的数组。     |
  | lower_index  | INT      | IN    | 否      | 绑定数组的最小下标。 |
  | higher_index | INT      | IN    | 否      | 绑定数组的最大下标。 |
     
  
- DBE_SQL.SET_RESULT_TYPE_INTS
  该函数用来定义从给定游标返回的INT数组类型的列，该接口只能应用于SELECT定义的游标中。定义的列通过查询列表的相对位置来标识，传入变量的数据类型决定了该列被定义的类型。
  DBE_SQL.SET_RESULT_TYPE_INTS函数的原型为：
  ```
  DBE_SQL.SET_RESULT_TYPE_INTS(
      context_id IN int,
      pos        IN int,
      column_ref IN anyarray,
      cnt        IN int,
      lower_bnd  IN int
  )
  RETURNS integer;
  ```
  表27DBE_SQL.SET_RESULT_TYPE_INTS接口说明 
  | 参数名称       | 类型       | 入参/出参 | 是否可以为空 | 描述            |
  |:---|:---|:---|:---|:---|
  | context_id | INT      | IN    | 否      | 被查询的游标ID。     |
  | pos        | INT      | IN    | 否      | 动态定义列在查询中的位置。 |
  | column_ref | ANYARRAY | IN    | 否      | 标记返回的数组类型。    |
  | cnt        | INT      | IN    | 否      | 标记一次获取多少个值。   |
  | lower_bnd  | INT      | IN    | 否      | 标记返回数组时的开始下标。 |
     
  
- DBE_SQL.SET_RESULT_TYPE_TEXTS
  该函数用来定义从给定游标返回的TEXT数组类型的列，该接口只能应用于SELECT定义的游标中。定义的列通过查询列表的相对位置来标识，传入变量的数据类型决定了该列被定义的类型。
  DBE_SQL.SET_RESULT_TYPE_TEXTS函数的原型为：
  ```
  DBE_SQL.SET_RESULT_TYPE_TEXTS(
      context_id IN int,
      pos        IN int,
      column_ref IN anyarray,
      cnt        IN int,
      lower_bnd  IN int,
      maxsize    IN int
  )
  RETURNS VOID;
  ```
  表28DBE_SQL.SET_RESULT_TYPE_TEXTS接口说明 
  | 参数名称       | 类型       | 入参/出参 | 是否可以为空 | 描述              |
  |:---|:---|:---|:---|:---|
  | context_id | INT      | IN    | 否      | 被查询的游标ID。       |
  | pos        | INT      | IN    | 否      | 动态定义列在查询中的位置。   |
  | column_ref | ANYARRAY | IN    | 否      | 标记返回的数组类型。      |
  | cnt        | INT      | IN    | 否      | 标记一次获取多少个值。     |
  | lower_bnd  | INT      | IN    | 否      | 标记返回数组时的开始下标。   |
  | maxsize    | INT      | IN    | 否      | 定义的TEXT类型的最大长度。 |
     
  
- DBE_SQL.SET_RESULT_TYPE_RAWS
  该函数用来定义从给定游标返回的RAW数组类型的列，该接口只能应用于SELECT定义的游标中。定义的列通过查询列表的相对位置来标识，传入变量的数据类型决定了该列被定义的类型。
  DBE_SQL.SET_RESULT_TYPE_RAWS函数的原型为：
  ```
  DBE_SQL.set_result_type_raws(
      context_id  IN int,
      pos         IN int,
      column_ref  IN anyarray,
      cnt         IN int,
      lower_bnd   IN int,
      column_size IN int
  )
  RETURNS integer;
  ```
  表29DBE_SQL.SET_RESULT_TYPE_RAWS接口说明 
  | 参数名称        | 类型       | 入参/出参 | 是否可以为空 | 描述            |
  |:---|:---|:---|:---|:---|
  | context_id  | INT      | IN    | 否      | 被查询的游标ID。     |
  | pos         | INT      | IN    | 否      | 动态定义列在查询中的位置。 |
  | column_ref  | ANYARRAY | IN    | 否      | 标记返回的数组类型。    |
  | cnt         | INT      | IN    | 否      | 标记一次获取多少个值。   |
  | lower_bnd   | INT      | IN    | 否      | 标记返回数组时的开始下标。 |
  | column_size | INT      | IN    | 否      | 列的长度。         |
     
  
- DBE_SQL.SET_RESULT_TYPE_BYTEAS
  该函数用来定义从给定游标返回的BYTEA数组类型的列，该接口只能应用于SELECT定义的游标中。定义的列通过查询列表的相对位置来标识，传入变量的数据类型决定了该列被定义的类型。
  DBE_SQL.SET_RESULT_TYPE_BYTEAS函数的原型为：
  ```
  DBE_SQL.set_result_type_byteas(
      context_id  IN int,
      pos         IN int,
      column_ref  IN anyarray,
      cnt         IN int,
      lower_bnd   IN int,
      column_size IN int
  )
  RETURNS integer;
  ```
  表30DBE_SQL.SET_RESULT_TYPE_BYTEAS接口说明 
  | 参数名称        | 类型       | 入参/出参 | 是否可以为空 | 描述            |
  |:---|:---|:---|:---|:---|
  | context_id  | INT      | IN    | 否      | 被查询的游标ID。     |
  | pos         | INT      | IN    | 否      | 动态定义列在查询中的位置。 |
  | column_ref  | ANYARRAY | IN    | 否      | 标记返回的数组类型。    |
  | cnt         | INT      | IN    | 否      | 标记一次获取多少个值。   |
  | lower_bnd   | INT      | IN    | 否      | 标记返回数组时的开始下标。 |
  | column_size | INT      | IN    | 否      | 列的长度。         |
     
  
- DBE_SQL.SET_RESULT_TYPE_CHARS
  该函数用来定义从给定游标返回的CHAR数组类型的列，该接口只能应用于SELECT定义的游标中。定义的列通过查询列表的相对位置来标识，传入变量的数据类型决定了该列被定义的类型。
  DBE_SQL.SET_RESULT_TYPE_CHARS函数的原型为：
  ```
  DBE_SQL.SET_RESULT_TYPE_CHARS(
      context_id  IN int, 
      pos         IN int,
      column_ref  IN anyarray,
      cnt         IN int,
      lower_bnd   IN int,
      column_size IN int
  )
  RETURNS integer;
  ```
  表31DBE_SQL.SET_RESULT_TYPE_CHARS接口说明 
  | 参数名称        | 类型       | 入参/出参 | 是否可以为空 | 描述            |
  |:---|:---|:---|:---|:---|
  | context_id  | INT      | IN    | 否      | 被查询的游标ID。     |
  | pos         | INT      | IN    | 否      | 动态定义列在查询中的位置。 |
  | column_ref  | ANYARRAY | IN    | 否      | 标记返回的数组类型。    |
  | cnt         | INT      | IN    | 否      | 标记一次获取多少个值。   |
  | lower_bnd   | INT      | IN    | 否      | 标记返回数组时的开始下标。 |
  | column_size | INT      | IN    | 否      | 列的长度。         |
     
  
- DBE_SQL.SET_RESULTS_TYPE
  该函数用来定义从给定游标返回的列，该接口只能应用于SELECT定义的游标中。定义的列通过查询列表的相对位置来标识，传入变量的数据类型决定了该列被定义的类型。
  DBE_SQL.SET_RESULTS_TYPE函数的原型为：
  ```
  DBE_SQL.SET_RESULTS_TYPE(
      context_id IN int,
      pos        IN int,
      column_ref IN anyarray,
      cnt        IN int,
      lower_bnd  IN int,
      maxsize    IN int DEFAULT 1024
  ) returns void;
  ```
  表32DBE_SQL.SET_RESULTS_TYPE接口说明 
  | 参数名称       | 类型       | 入参/出参 | 是否可以为空 | 描述            |
  |:---|:---|:---|:---|:---|
  | context_id | INT      | IN    | 否      | 被查询的游标ID。     |
  | pos        | INT      | IN    | 否      | 动态定义列在查询中的位置。 |
  | column_ref | ANYARRAY | IN    | 否      | 标记返回的数组类型。    |
  | cnt        | INT      | IN    | 否      | 标记一次获取多少个值。   |
  | lower_bnd  | INT      | IN    | 否      | 标记返回数组时的开始下标。 |
  | maxsize    | INT      | IN    | 是      | 定义的类型的最大长度。   |
     
  
- DBE_SQL.GET_RESULTS_INT
  该存储过程用来返回给定游标给定位置的游标INT数组类型的值，该接口访问的是DBE_SQL.NEXT_ROW获取的数据。
  DBE_SQL.GET_RESULTS_INT存储过程的原型为：
  ```
  DBE_SQL.GET_RESULTS_INT(
      context_id   IN    int, 
      pos          IN    int,  
      column_value INOUT anyarray
  );
  ```
  表33DBE_SQL.GET_RESULTS_INT接口说明 
  | 参数名称         | 类型       | 入参/出参 | 是否可以为空 | 描述            |
  |:---|:---|:---|:---|:---|
  | context_id   | INT      | IN    | 否      | 被查询的游标ID。     |
  | pos          | INT      | IN    | 否      | 动态定义列在查询中的位置。 |
  | column_value | ANYARRAY | INOUT | 否      | 返回值。          |
     
  
- DBE_SQL.GET_RESULTS_TEXT
  该存储过程用来返回给定游标给定位置的游标TEXT数组类型的值，该接口访问的是DBE_SQL.NEXT_ROW获取的数据。
  DBE_SQL.GET_RESULTS_TEXT存储过程的原型为：
  ```
  DBE_SQL.GET_RESULTS_TEXT(
      context_id   IN    int,
      pos          IN    int,  
      column_value INOUT anyarray
  );
  ```
  表34DBE_SQL.GET_RESULTS_TEXT接口说明 
  | 参数名称         | 类型       | 入参/出参 | 是否可以为空 | 描述            |
  |:---|:---|:---|:---|:---|
  | context_id   | INT      | IN    | 否      | 被查询的游标ID。     |
  | pos          | INT      | IN    | 否      | 动态定义列在查询中的位置。 |
  | column_value | ANYARRAY | INOUT | 否      | 返回值。          |
     
  
- DBE_SQL.GET_RESULTS_RAW
  该存储过程用来返回给定游标给定位置的游标RAW数组类型的值，该接口访问的是DBE_SQL.NEXT_ROW获取的数据。
  DBE_SQL.GET_RESULTS_RAW存储过程的原型为：
  ```
  DBE_SQL.GET_RESULTS_RAW(
      context_id   IN    int,
      pos          IN    int, 
      column_value INOUT anyarray
  );
  ```
  表35DBE_SQL.GET_RESULTS_RAW接口说明 
  | 参数名称         | 类型       | 入参/出参 | 是否可以为空 | 描述            |
  |:---|:---|:---|:---|:---|
  | context_id   | INT      | IN    | 否      | 被查询的游标ID。     |
  | pos          | INT      | IN    | 否      | 动态定义列在查询中的位置。 |
  | column_value | ANYARRAY | INOUT | 否      | 返回值。          |
     
  
- DBE_SQL.GET_RESULTS_BYTEA
  该存储过程用来返回给定游标给定位置的游标BYTEA数组类型的值，该接口访问的是DBE_SQL.NEXT_ROW获取的数据。
  DBE_SQL.GET_RESULTS_BYTEA存储过程的原型为：
  ```
  DBE_SQL.GET_RESULTS_BYTEA(
      context_id   IN    int,
      pos          IN    int, 
      column_value INOUT anyarray
  );
  ```
  表36DBE_SQL.GET_RESULTS_BYTEA接口说明 
  | 参数名称         | 类型       | 入参/出参 | 是否可以为空 | 描述            |
  |:---|:---|:---|:---|:---|
  | context_id   | INT      | IN    | 否      | 被查询的游标ID。     |
  | pos          | INT      | IN    | 否      | 动态定义列在查询中的位置。 |
  | column_value | ANYARRAY | INOUT | 否      | 返回值。          |
     
  
- DBE_SQL.GET_RESULTS_CHAR
  该存储过程用来返回给定游标给定位置的游标CHAR数组类型的值，该接口访问的是DBE_SQL.NEXT_ROW获取的数据。
  DBE_SQL.GET_RESULTS_CHAR存储过程的原型为：
  ```
  DBE_SQL.GET_RESULTS_CHAR(
      context_id   IN    int,
      pos          IN    int, 
      column_value INOUT anyarray
  );
  ```
  表37DBE_SQL.GET_RESULTS_CHAR接口说明 
  | 参数名称         | 类型       | 入参/出参 | 是否可以为空 | 描述            |
  |:---|:---|:---|:---|:---|
  | context_id   | INT      | IN    | 否      | 被查询的游标ID。     |
  | pos          | INT      | IN    | 否      | 动态定义列在查询中的位置。 |
  | column_value | ANYARRAY | INOUT | 否      | 返回值。          |
     
  
- DBE_SQL.GET_RESULTS
  该存储过程用来返回给定游标给定位置的游标数组类型的值，该接口访问的是DBE_SQL.NEXT_ROW获取的数据。
  ![](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/public_sys-resources/note_3.0-zh-cn.png)
  由于DBE_SQL.GET_RESULTS底层机制通过数组实现，当用不同的数组获取同一列的返回值时，会由于内部索引的不连续向数组中填充NULL值来确保数组本身索引的连续性，这会导致返回结果数组的长度和Oracle的不一致。
  DBE_SQL.GET_RESULTS存储过程的原型为：
  ```
  DBE_SQL.GET_RESULTS(
      context_id   IN    int,
      pos          IN    int,
      column_value INOUT anyarray
  );
  ```
  表38DBE_SQL.GET_RESULTS接口说明 
  | 参数名称         | 类型       | 入参/出参 | 是否可以为空 | 描述            |
  |:---|:---|:---|:---|:---|
  | context_id   | INT      | IN    | 否      | 被查询的游标ID。     |
  | pos          | INT      | IN    | 否      | 动态定义列在查询中的位置。 |
  | column_value | ANYARRAY | INOUT | 否      | 返回值。          |
     
  
- DBE_SQL.SQL_DESCRIBE_COLUMNS
  该函数用来描述列信息，该接口只能应用于SELECT定义的游标中。
  DBE_SQL.SQL_DESCRIBE_COLUMNS函数的原型为：
  ```
  DBE_SQL.SQL_DESCRIBE_COLUMNS(
      context_id IN    int, 
      col_cnt    INOUT int, 
      desc_t     INOUT dbe_sql.desc_tab
  )RETURNS record;
  ```
  表39DBE_SQL.SQL_DESCRIBE_COLUMNS接口说明 
  | 参数名称       | 类型               | 入参/出参 | 是否可以为空 | 描述         |
  |:---|:---|:---|:---|:---|
  | context_id | INT              | IN    | 否      | 被查询的游标ID。  |
  | col_cnt    | INT              | INOUT | 否      | 返回的列的数量。   |
  | desc_t     | DBE_SQL.DESC_TAB | INOUT | 否      | 返回的列的描述信息。 |
     
  
- DBE_SQL.DESCRIBE_COLUMNS
  该存储过程用来描述列信息，该接口为兼容接口，只能应用于SELECT定义的游标中。
  DBE_SQL.DESCRIBE_COLUMNS存储过程的原型为：
  ```
  DBE_SQL.DESCRIBE_COLUMNS(
      context_id IN  int, 
      col_cnt    OUT int, 
      desc_t     OUT dbe_sql.desc_tab
  )
  ```
  表40DBE_SQL.DESCRIBE_COLUMNS接口说明 
  | 参数名称       | 类型               | 入参/出参 | 是否可以为空 | 描述         |
  |:---|:---|:---|:---|:---|
  | context_id | INT              | IN    | 否      | 被查询的游标ID。  |
  | col_cnt    | INT              | OUT   | 否      | 返回的列的数量。   |
  | desc_t     | DBE_SQL.DESC_TAB | OUT   | 否      | 返回的列的描述信息。 |
     
  
- DBE_SQL.BIND_VARIABLE
  该函数是绑定参数接口，建议使用DBE_SQL.SQL_BIND_VARIABLE。
  
  
- DBE_SQL.SQL_SET_RESULTS_TYPE_C
  该函数是动态定义一个数组类型的列，不建议用户使用。
  DBE_SQL.SQL_SET_RESULTS_TYPE_C函数的原型为：
  ```
  DBE_SQL.sql_set_results_type_c(
      context_id IN int,
      pos        IN int,
      column_ref IN anyarray,
      cnt        IN int,
      lower_bnd  IN int,
      col_type   IN anyelement,
      maxsize    IN int
  )return integer;
  ```
  表41DBE_SQL.SQL_SET_RESULTS_TYPE_C接口说明 
  | 参数名称       | 类型         | 入参/出参 | 是否可以为空 | 描述                |
  |:---|:---|:---|:---|:---|
  | context_id | INT        | IN    | 否      | 被查询的游标ID。         |
  | pos        | INT        | IN    | 否      | 动态定义列在查询中的位置。     |
  | column_ref | ANYARRAY   | IN    | 否      | 标记返回的数组类型。        |
  | cnt        | INT        | IN    | 否      | 标记一次获取多少个值。       |
  | lower_bnd  | INT        | IN    | 否      | 标记返回数组时的开始下标。     |
  | col_type   | ANYELEMENT | IN    | 否      | 标记返回的数组类型对应的变量类型。 |
  | maxsize    | INT        | IN    | 否      | 定义的类型的最大长度。       |
     
  
- DBE_SQL.SQL_GET_VALUES_C
  该函数是读取一个已动态定义的列值，不建议用户使用。
  DBE_SQL.SQL_GET_VALUES_C函数的原型为：
  ```
  DBE_SQL.sql_get_values_c(
      context_id   IN    int,
      pos          IN    int,
      results_type INOUT anyarray,
      result_type  IN    anyelement
  )return anyarray;
  ```
  表42DBE_SQL.SQL_GET_VALUES_C接口说明 
  | 参数名称         | 类型         | 入参/出参 | 是否可以为空 | 描述        |
  |:---|:---|:---|:---|:---|
  | context_id   | INT        | IN    | 否      | 被查询的游标ID。 |
  | pos          | INT        | IN    | 否      | 参数位置信息。   |
  | results_type | ANYARRAY   | INOUT | 否      | 获取的结果。    |
  | result_type  | ANYELEMENT | IN    | 否      | 获取的结果类型。  |
     
  
- DBE_SQL.GET_VARIABLE_RESULT
  该存储过程用来返回绑定的OUT参数的值，可以用来获取存储过程中的OUT参数。
  DBE_SQL.GET_VARIABLE_RESULT存储过程的原型为：
  ```
  DBE_SQL.get_variable_result(
      context_id   IN    int,
      pos          IN    VARCHAR2,
      column_value INOUT anyelement
  );
  ```
  表43DBE_SQL.GET_VARIABLE_RESULT接口说明 
  | 参数名称         | 类型         | 入参/出参 | 是否可以为空 | 描述        |
  |:---|:---|:---|:---|:---|
  | context_id   | INT        | IN    | 否      | 被查询的游标ID。 |
  | pos          | VARCHAR2   | IN    | 否      | 绑定的参数名。   |
  | column_value | ANYELEMENT | INOUT | 否      | 返回值。      |
     
  
- DBE_SQL.GET_VARIABLE_RESULT_CHAR
  该函数用来返回绑定的CHAR类型的OUT参数的值，可以用来获取存储过程中的OUT参数。
  DBE_SQL.GET_VARIABLE_RESULT_CHAR函数的原型为：
  ```
  DBE_SQL.get_variable_result_char(
      context_id IN int,
      pos        IN VARCHAR2
  )
  RETURNS char
  ```
  表44DBE_SQL.GET_VARIABLE_RESULT_CHAR接口说明 
  | 参数名称       | 类型       | 入参/出参 | 是否可以为空 | 描述        |
  |:---|:---|:---|:---|:---|
  | context_id | INT      | IN    | 否      | 被查询的游标ID。 |
  | pos        | VARCHAR2 | IN    | 否      | 绑定的参数名。   |
     
  
- DBE_SQL.GET_VARIABLE_RESULT_RAW
  该存储过程用来返回绑定的RAW类型的OUT参数的值，可以用来获取存储过程中的OUT参数。
  DBE_SQL.GET_VARIABLE_RESULT_RAW存储过程的原型为：
  ```
  DBE_SQL.get_variable_result_raw(
      context_id IN    int,
      pos        IN    VARCHAR2,
      value      INOUT anyelement
  );
  ```
  表45DBE_SQL.GET_VARIABLE_RESULT_RAW接口说明 
  | 参数名称       | 类型         | 入参/出参 | 是否可以为空 | 描述        |
  |:---|:---|:---|:---|:---|
  | context_id | INT        | IN    | 否      | 被查询的游标ID。 |
  | pos        | VARCHAR2   | IN    | 否      | 绑定的参数名。   |
  | value      | ANYELEMENT | INOUT | 否      | 返回值。      |
     
  
- DBE_SQL.GET_VARIABLE_RESULT_TEXT
  该函数用来返回绑定的TEXT类型的OUT参数的值，可以用来获取存储过程中的OUT参数。
  DBE_SQL.GET_VARIABLE_RESULT_TEXT函数的原型为：
  ```
  CREATE OR REPLACE FUNCTION DBE_SQL.get_variable_result_text(
      context_id IN int,
      pos        IN VARCHAR2
  )
  RETURNS text
  ```
  表46DBE_SQL.GET_VARIABLE_RESULT_TEXT接口说明 
  | 参数名称       | 类型       | 入参/出参 | 是否可以为空 | 描述        |
  |:---|:---|:---|:---|:---|
  | context_id | INT      | IN    | 否      | 被查询的游标ID。 |
  | pos        | VARCHAR2 | IN    | 否      | 绑定的参数名。   |
     
  
- DBE_SQL.GET_VARIABLE_RESULT_INT
  该存储过程用来返回绑定的INT类型的OUT参数的值，可以用来获取存储过程中的OUT参数。
  DBE_SQL.GET_VARIABLE_RESULT_INT存储过程的原型为：
  ```
  DBE_SQL.get_variable_result_int(
      context_id IN    int,
      pos        IN    VARCHAR2,
      value      INOUT anyelement
  );
  ```
  表47DBE_SQL.GET_VARIABLE_RESULT_INT接口说明 
  | 参数名称       | 类型         | 入参/出参 | 是否可以为空 | 描述        |
  |:---|:---|:---|:---|:---|
  | context_id | INT        | IN    | 否      | 被查询的游标ID。 |
  | pos        | VARCHAR2   | IN    | 否      | 绑定的参数名。   |
  | value      | ANYELEMENT | INOUT | 否      | 返回值。      |
     
  
- DBE_SQL.GET_ARRAY_RESULT_TEXT
  该存储过程用来返回绑定的TEXT数组类型的OUT参数的值，可以用来获取存储过程中的OUT参数。
  DBE_SQL.GET_ARRAY_RESULT_TEXT存储过程的原型为：
  ```
  DBE_SQL.get_array_result_text(
      context_id   IN    int,
      pos          IN    VARCHAR2,
      column_value INOUT anyarray
  );
  ```
  表48DBE_SQL.GET_ARRAY_RESULT_TEXT接口说明 
  | 参数名称         | 类型       | 入参/出参 | 是否可以为空 | 描述        |
  |:---|:---|:---|:---|:---|
  | context_id   | INT      | IN    | 否      | 被查询的游标ID。 |
  | pos          | VARCHAR2 | IN    | 否      | 绑定的参数名。   |
  | column_value | ANYARRAY | INOUT | 否      | 返回值。      |
     
  
- DBE_SQL.GET_ARRAY_RESULT_RAW
  该存储过程用来返回绑定的RAW数组类型的OUT参数的值，可以用来获取存储过程中的OUT参数。
  DBE_SQL.GET_ARRAY_RESULT_RAW存储过程的原型为：
  ```
  DBE_SQL.get_array_result_raw(
      context_id   IN    int,
      pos          IN    VARCHAR2,
      column_value INOUT anyarray
  );
  ```
  表49DBE_SQL.GET_ARRAY_RESULT_RAW接口说明 
  | 参数名称         | 类型       | 入参/出参 | 是否可以为空 | 描述        |
  |:---|:---|:---|:---|:---|
  | context_id   | INT      | IN    | 否      | 被查询的游标ID。 |
  | pos          | VARCHAR2 | IN    | 否      | 绑定的参数名。   |
  | column_value | ANYARRAY | INOUT | 否      | 返回值。      |
     
  
- DBE_SQL.GET_ARRAY_RESULT_CHAR
  该存储过程用来返回绑定的CHAR数组类型的OUT参数的值，可以用来获取存储过程中的OUT参数。
  DBE_SQL.GET_ARRAY_RESULT_CHAR存储过程的原型为：
  ```
  DBE_SQL.get_array_result_char(
      context_id   IN    int,
      pos          IN    VARCHAR2,
      column_value INOUT anyarray
  );
  ```
  表50DBE_SQL.GET_ARRAY_RESULT_CHAR接口说明 
  | 参数名称         | 类型       | 入参/出参 | 是否可以为空 | 描述        |
  |:---|:---|:---|:---|:---|
  | context_id   | INT      | IN    | 否      | 被查询的游标ID。 |
  | pos          | VARCHAR2 | IN    | 否      | 绑定的参数名。   |
  | column_value | ANYARRAY | INOUT | 否      | 返回值。      |
     
  
- DBE_SQL.GET_ARRAY_RESULT_INT
  该存储过程用来返回绑定的INT数组类型的OUT参数的值，可以用来获取存储过程中的OUT参数。
  DBE_SQL.GET_ARRAY_RESULT_INT存储过程的原型为：
  ```
  DBE_SQL.get_array_result_int(
      context_id   IN    int,
      pos          IN    VARCHAR2,
      column_value INOUT anyarray
  );
  ```
  表51DBE_SQL.GET_ARRAY_RESULT_INT接口说明 
  | 参数名称         | 类型       | 入参/出参 | 是否可以为空 | 描述        |
  |:---|:---|:---|:---|:---|
  | context_id   | INT      | IN    | 否      | 被查询的游标ID。 |
  | pos          | VARCHAR2 | IN    | 否      | 绑定的参数名。   |
  | column_value | ANYARRAY | INOUT | 否      | 返回值。      |
     
  
#### 示例
```
-- 示例1
-- 创建表并插入数据
CREATE TABLE test_desc_cols(
    id NUMBER,
    name VARCHAR2(50)
);
INSERT INTO test_desc_cols(id, name) VALUES (1, 'xiaoming');
INSERT INTO test_desc_cols(id, name) VALUES (2, 'xiaohong');
INSERT INTO test_desc_cols(id, name) VALUES (3, 'xiaolan');
DECLARE
context_id  INTEGER;
col_cnt     INTEGER;
v_id int;
v_name varchar2;
execute_ret  INTEGER;
BEGIN
-- 打开游标
context_id := DBE_SQL.REGISTER_CONTEXT();
-- 编译游标
DBE_SQL.SQL_SET_SQL(context_id, 'SELECT * FROM test_desc_cols', 2);
-- 设置列返回值的类型
DBE_SQL.SET_RESULT_TYPE(context_id, 1, v_id);
DBE_SQL.SET_RESULT_TYPE(context_id, 2, v_name);
execute_ret := DBE_SQL.SQL_RUN(context_id);
loop 
exit when (DBE_SQL.NEXT_ROW(context_id) <= 0);
--获取值
DBE_SQL.GET_RESULT(context_id, 1, v_id);
DBE_SQL.GET_RESULT(context_id, 2, v_name);
--输出结果
dbe_output.print_line('id:'|| v_id || ' name:' || v_name);
end loop;
DBE_SQL.SQL_UNREGISTER_CONTEXT(context_id);
END;
/
-- 预期结果为：
id:1 name:xiaoming
id:2 name:xiaohong
id:3 name:xiaolan
ANONYMOUS BLOCK EXECUTE
-- 清理环境
drop table if exists test_desc_cols;
DROP TABLE
-- 示例2
CREATE OR REPLACE PROCEDURE test_square(n NUMBER, square OUT NUMBER) IS
BEGIN
  square := n * n;
END;
/
CREATE PROCEDURE
DECLARE
cur NUMBER;
query varchar(2000);
ret integer;
n NUMBER;
square Integer;
BEGIN
  n := 2;
  cur := DBE_SQL.REGISTER_CONTEXT();
  query := 'BEGIN test_square(:n_bnd, :square_bnd); END;';
  DBE_SQL.SQL_SET_SQL(cur, query, 2);
  DBE_SQL.SQL_BIND_VARIABLE(cur, 'n_bnd', n);
  DBE_SQL.SQL_BIND_VARIABLE(cur, 'square_bnd', square);
  ret := DBE_SQL.SQL_RUN(cur);
  DBE_SQL.GET_VARIABLE_RESULT(cur, 'square_bnd', square);
  DBE_OUTPUT.PRINT_LINE('square = ' || square);
  DBE_SQL.SQL_UNREGISTER_CONTEXT(cur);
END;
/
-- 预期结果为：
square = 4
ANONYMOUS BLOCK EXECUTE
-- 清理环境
drop PROCEDURE test_square;
DROP PROCEDURE
-- 示例3
-- DESCRIBE_COLUMNS、RUN_AND_NEXT和LAST_ROW_COUNT接口示例
-- 创建表并插入数据
CREATE TABLE test_desc_cols(
    id NUMBER,
    name VARCHAR2(50)
);
INSERT INTO test_desc_cols(id, name) VALUES (1, 'xiaoming');
INSERT INTO test_desc_cols(id, name) VALUES (2, 'xiaohong');
INSERT INTO test_desc_cols(id, name) VALUES (3, 'xiaolan');
-- 创建列描述信息打印存储过程
CREATE OR REPLACE PROCEDURE print_rec(
    rec in DBE_SQL.DESC_REC
)package AS
BEGIN
    raise INFO 'col_type            =    %', rec.col_type;
    raise INFO 'col_name            =    %', rec.col_name;
    raise INFO 'col_name_len        =    %', rec.col_name_len;
END;
/
CREATE PROCEDURE
-- 进行功能验证
DECLARE
context_id  INTEGER;
col_cnt     INTEGER;
rec_tab     DBE_SQL.DESC_TAB;
excute_ret  INTEGER;
nextrow_ret INTEGER;
last_row_count INTEGER;
BEGIN
-- 打开游标
context_id := DBE_SQL.REGISTER_CONTEXT();
-- 编译游标
DBE_SQL.SQL_SET_SQL(context_id, 'SELECT * FROM test_desc_cols', 2);
-- 进行列描述和信息打印
DBE_SQL.DESCRIBE_COLUMNS(context_id, col_cnt, rec_tab);
FOR var IN 1..col_cnt LOOP
    print_rec(rec_tab(var));
END LOOP;
-- 执行并获取一行数据
excute_ret := DBE_SQL.RUN_AND_NEXT(context_id);
-- 获取一行数据
nextrow_ret := DBE_SQL.NEXT_ROW(context_id);
-- 得到目前已经获取的数据行数
last_row_count := DBE_SQL.LAST_ROW_COUNT();
DBE_OUTPUT.PRINT_LINE('last_row_count =  '|| last_row_count);
DBE_SQL.SQL_UNREGISTER_CONTEXT(context_id);
END;
/
-- 预期结果为：
INFO:  col_type            =    1700
CONTEXT:  SQL statement "CALL print_rec(rec_tab[var])"
PL/pgSQL function inline_code_block line 16 at PERFORM
INFO:  col_name            =    id
CONTEXT:  SQL statement "CALL print_rec(rec_tab[var])"
PL/pgSQL function inline_code_block line 16 at PERFORM
INFO:  col_name_len        =    2
CONTEXT:  SQL statement "CALL print_rec(rec_tab[var])"
PL/pgSQL function inline_code_block line 16 at PERFORM
INFO:  col_type            =    1043
CONTEXT:  SQL statement "CALL print_rec(rec_tab[var])"
PL/pgSQL function inline_code_block line 16 at PERFORM
INFO:  col_name            =    name
CONTEXT:  SQL statement "CALL print_rec(rec_tab[var])"
PL/pgSQL function inline_code_block line 16 at PERFORM
INFO:  col_name_len        =    4
CONTEXT:  SQL statement "CALL print_rec(rec_tab[var])"
PL/pgSQL function inline_code_block line 16 at PERFORM
last_row_count =  2
ANONYMOUS BLOCK EXECUTE
-- 清理环境
drop table test_desc_cols;
DROP TABLE
-- 示例4
DROP TABLE if exists dbe_sql_tab;
create table dbe_sql_tab(a char(30), b int, c text, d bytea, e text, f bool);
insert into dbe_sql_tab values('aaa', 10, 'abcdefghijklmn', 'a', 'abcdefghijklmn', true);
DECLARE
cursorid int;
execute_ret int;
query varchar(2000);
err numeric;
v_char char(30);
v_int int;
v_long text;
v_long_len int;
v_bytea bytea;
v_text text;
BEGIN
query := 'select * from dbe_sql_tab';
cursorid := DBE_SQL.register_context();
DBE_SQL.sql_set_sql(cursorid, query, 1);
DBE_SQL.SET_RESULT_TYPE_CHAR(cursorid, 1, v_char, 30);
DBE_SQL.SET_RESULT_TYPE_INT(cursorid, 2);
DBE_SQL.SET_RESULT_TYPE_LONG(cursorid, 3);
DBE_SQL.SET_RESULT_TYPE_RAW(cursorid, 4, v_bytea, 8);
DBE_SQL.SET_RESULT_TYPE_TEXT(cursorid, 5, 1024);
execute_ret := DBE_SQL.sql_run(cursorid);
loop 
exit when (DBE_SQL.next_row(cursorid) <= 0);
DBE_SQL.GET_RESULT_CHAR(cursorid, 1, v_char);
v_int := DBE_SQL.GET_RESULT_INT(cursorid, 2);
DBE_SQL.GET_RESULT_LONG(cursorid, 3, 3, 3, v_long, v_long_len);
DBE_SQL.GET_RESULT_RAW(cursorid, 4, v_bytea);
v_text := DBE_SQL.GET_RESULT_TEXT(cursorid, 5);
dbe_output.print_line('a:'|| v_char);
dbe_output.print_line('b:'|| v_int);
dbe_output.print_line('c:'|| v_long);
raise info 'd:%', v_bytea;
dbe_output.print_line('e:'|| v_text);
end loop;
DBE_SQL.sql_unregister_context(cursorid);
END;
/
-- 预期结果为：
a:aaa
b:10
c:cde
INFO:  d:\x61
e:abcdefghijklmn
ANONYMOUS BLOCK EXECUTE
DECLARE
cursorid int;
execute_ret int;
query varchar(2000);
BEGIN
query := 'select * from dbe_sql_tab';
cursorid := DBE_SQL.register_context();
DBE_SQL.sql_set_sql(cursorid, query, 1);
DBE_SQL.SET_RESULT_TYPE_UNKNOWN(cursorid, 7, 'boolean');
execute_ret := DBE_SQL.sql_run(cursorid);
loop 
exit when (DBE_SQL.next_row(cursorid) <= 0);
DBE_SQL.GET_RESULT_UNKNOWN(cursorid, 7, 'boolean');
end loop;
DBE_SQL.sql_unregister_context(cursorid);
END;
/
-- 预期结果为：
ERROR:  UnSupport data type for set_result_type(context: 8, pos: 7, 'boolean')
CONTEXT:  SQL statement "CALL pg_catalog.report_application_error('UnSupport data type for set_result_type(context: '||context_id||', pos: '||pos||', '||PG_CATALOG.QUOTE_LITERAL(col_type)||')')"
PL/pgSQL function dbe_sql.set_result_type_unknown(integer,integer,text) line 8 at PERFORM
SQL statement "CALL dbe_sql.set_result_type_unknown(cursorid,7,'boolean')"
PL/pgSQL function inline_code_block line 10 at PERFORM
-- 清理环境
drop table dbe_sql_tab;
DROP TABLE
-- 示例5
drop table if exists dbe_sql_tab;
create table dbe_sql_tab(a char(30), b raw);
insert into dbe_sql_tab values('aaa', HEXTORAW('DEADBEEF'));
DECLARE
cursorid int;
execute_ret int;
query varchar(2000);
v_char char(30);
v_raw bytea;
BEGIN
query := 'select * from dbe_sql_tab';
cursorid := DBE_SQL.register_context();
DBE_SQL.sql_set_sql(cursorid, query, 2);
DBE_SQL.SET_RESULT_TYPE(cursorid, 1, v_char);
DBE_SQL.SET_RESULT_TYPE_RAW(cursorid, 2, v_raw, 1024);
execute_ret := DBE_SQL.sql_run(cursorid);
loop 
exit when (DBE_SQL.next_row(cursorid) <= 0);
v_char := DBE_SQL.DBE_SQL_GET_RESULT_CHAR(cursorid, 1);
v_raw := DBE_SQL.DBE_SQL_GET_RESULT_RAW(cursorid, 2);
dbe_output.print_line('a:'|| v_char);
raise info 'b:%', v_raw;
end loop;
DBE_SQL.sql_unregister_context(cursorid);
END;
/
-- 预期结果为：
a:aaa
INFO:  b:\x4445414442454546
ANONYMOUS BLOCK EXECUTE
-- 清理环境
drop table dbe_sql_tab;
DROP TABLE
-- 示例6
DECLARE
cursorid int;
execute_ret int;
is_open boolean;
BEGIN
cursorid := DBE_SQL.register_context();
is_open := DBE_SQL.IS_ACTIVE(cursorid);
dbe_output.print_line('is_open:' ||is_open);
DBE_SQL.sql_unregister_context(cursorid);
is_open := DBE_SQL.IS_ACTIVE(cursorid);
dbe_output.print_line('is_open:' ||is_open);
END;
/
-- 预期结果为：
is_open:true
is_open:false
ANONYMOUS BLOCK EXECUTE
-- 示例7
create table tbl(a integer ,b varchar(100));
DECLARE
c integer;
v1 integer[];
v2 varchar2[];
query varchar(2000);
ret integer;
begin
c := dbe_sql.register_context();
query := 'insert into tbl(a,b) values(:v_1, :v_2);';
dbe_sql.sql_set_sql(c, query, 2);
v1(1) := 1;
v1(2) := 2;
v2(1) := '1';
v2(2) := '2';
dbe_sql.sql_bind_array(c, 'v_1', v1);
dbe_sql.sql_bind_array(c, 'v_2', v2);
ret := dbe_sql.sql_run(c);
dbe_sql.sql_unregister_context(c);
end;
/
ANONYMOUS BLOCK EXECUTE
select * from tbl order by a;
-- 预期结果为：
 a | b 
---+---
 1 | 1
 2 | 2
(2 rows)
-- 清理环境
drop table tbl;
DROP TABLE
-- 示例8
-- 前置条件
drop table if exists dbe_sql_tab;
create table dbe_sql_tab(a int, b text, c raw, d text, e char, f int);
insert into dbe_sql_tab values(1, '9', '5', '13', 'a', 1);
insert into dbe_sql_tab values(2, '9', '6', '14', 'b', 2);
insert into dbe_sql_tab values(3, '7', '7', '15', 'c', 3);
insert into dbe_sql_tab values(4, '6', '8', '16', 'd', 4);
DECLARE
query varchar(2000);
context_id int;
execute_ret int;
v_id int;
v_ints int[];
v_texts text[];
v_raws raw[];
v_byteas bytea[];
v_chars character[];
v_type int[];
BEGIN
query := ' select * from dbe_sql_tab order by 1';
context_id := dbe_sql.register_context();
dbe_sql.sql_set_sql(context_id, query, 1);
DBE_SQL.SET_RESULT_TYPE_INTS(context_id, 1, v_ints, 3, 1);
DBE_SQL.SET_RESULT_TYPE_TEXTS(context_id, 2, v_texts, 3, 1, 1024);
DBE_SQL.SET_RESULT_TYPE_RAWS(context_id, 3, v_raws, 3, 1, 1024);
DBE_SQL.SET_RESULT_TYPE_BYTEAS(context_id, 4, v_byteas, 3, 1, 1024);
DBE_SQL.SET_RESULT_TYPE_CHARS(context_id, 5, v_chars, 3, 1, 1024);
DBE_SQL.SET_RESULTS_TYPE(context_id, 6, v_type, 3, 1);
execute_ret := dbe_sql.sql_run(context_id);
loop
v_id := dbe_sql.next_row(context_id);
v_ints := DBE_SQL.GET_RESULTS_INT(context_id, 1, v_ints);
v_texts := DBE_SQL.GET_RESULTS_TEXT(context_id, 2, v_texts);
v_raws := DBE_SQL.GET_RESULTS_RAW(context_id, 3, v_raws);
v_byteas := DBE_SQL.GET_RESULTS_BYTEA(context_id, 4, v_byteas);
v_chars := DBE_SQL.GET_RESULTS_CHAR(context_id, 5, v_chars);
v_type := DBE_SQL.GET_RESULTS(context_id, 6, v_type);
exit when(v_id != 3);
end loop;
FOR i IN v_ints.FIRST .. v_ints.LAST  LOOP
     dbe_output.print_line('int' || i || ' = ' || v_ints[i]);
END LOOP;
FOR i IN v_texts.FIRST .. v_texts.LAST  LOOP
     dbe_output.print_line('text' || i || ' = ' || v_texts[i]);
END LOOP;
FOR i IN v_raws.FIRST .. v_raws.LAST  LOOP
     dbe_output.print_line('raw' || i || ' = ' || v_raws[i]);
END LOOP;
FOR i IN v_byteas.FIRST .. v_byteas.LAST  LOOP
     dbe_output.print_line('bytea' || i || ' = ' || v_byteas[i]);
END LOOP;
FOR i IN v_chars.FIRST .. v_chars.LAST  LOOP
     dbe_output.print_line('char' || i || ' = ' || v_chars[i]);
END LOOP;
FOR i IN v_type.FIRST .. v_type.LAST  LOOP
     dbe_output.print_line('type' || i || ' = ' || v_type[i]);
END LOOP;
dbe_sql.sql_unregister_context(context_id);
END;
/
-- 预期结果为：
int1 = 1
int2 = 2
int3 = 3
int4 = 4
text1 = 9
text2 = 9
text3 = 7
text4 = 6
raw1 = 05
raw2 = 06
raw3 = 07
raw4 = 08
bytea1 = \x3133
bytea2 = \x3134
bytea3 = \x3135
bytea4 = \x3136
char1 = a
char2 = b
char3 = c
char4 = d
type1 = 1
type2 = 2
type3 = 3
type4 = 4
ANONYMOUS BLOCK EXECUTE
-- 清理环境
drop table if exists dbe_sql_tab;
DROP TABLE
-- 示例9
-- 前置条件
drop table if exists dbe_sql_tab;
create table dbe_sql_tab(a int ,b int);
insert into dbe_sql_tab values(1,3);
DECLARE
context_id int;
type re_rssc is record (col_num int, desc_col dbe_sql.desc_tab);
employer re_rssc;
res re_rssc;
d int;
dd dbe_sql.desc_tab;
query varchar(2000);
BEGIN
query := 'select * from dbe_sql_tab';
--打开游标
context_id := dbe_sql.register_context();
--编译游标
dbe_sql.sql_set_sql(context_id, query, 1);
--执行
res := dbe_sql.sql_describe_columns(context_id, d,dd);
--输出结果
dbe_output.print_line('col_num:' || res.col_num);
dbe_output.print_line('col_type:' || res.desc_col[1].col_type);
dbe_output.print_line('col_max_len:' || res.desc_col[1].col_max_len);
dbe_output.print_line('col_name:' || res.desc_col[1].col_name);
dbe_output.print_line('col_name_len:' || res.desc_col[1].col_name_len);
dbe_output.print_line('col_schema_name:' || res.desc_col[1].col_schema_name);
dbe_output.print_line('col_schema_name_len:' || res.desc_col[1].col_schema_name_len);
dbe_output.print_line('col_precision:' || res.desc_col[1].col_precision);
dbe_output.print_line('col_scale:' || res.desc_col[1].col_scale);
dbe_output.print_line('col_charsetid:' || res.desc_col[1].col_charsetid);
dbe_output.print_line('col_charsetform:' || res.desc_col[1].col_charsetform);
dbe_output.print_line('col_null_ok:' || res.desc_col[1].col_null_ok);
--关闭游标
dbe_sql.sql_unregister_context(context_id);
END;
/
-- 预期结果为：
col_num:2
col_type:23
col_max_len:4
col_name:a
col_name_len:1
col_schema_name:
col_schema_name_len:0
col_precision:0
col_scale:0
col_charsetid:0
col_charsetform:0
col_null_ok:true
ANONYMOUS BLOCK EXECUTE
-- 清理环境
drop table if exists dbe_sql_tab;
DROP TABLE
-- 示例10
drop table if exists dbe_sql_tab;
create table dbe_sql_tab(a int);
insert into dbe_sql_tab values(1);
insert into dbe_sql_tab values(2);
insert into dbe_sql_tab values(3);
DECLARE
query varchar(2000);
context_id int;
execute_ret int;
v_id int;
v_ints int[];
i1 integer;
BEGIN
query := 'select * from dbe_sql_tab order by 1';
context_id := dbe_sql.register_context();
dbe_sql.sql_set_sql(context_id, query, 1);
DBE_SQL.SQL_SET_RESULTS_TYPE_C(context_id, 1, v_ints, 3, 1, i1, 0);
execute_ret := dbe_sql.sql_run(context_id);
loop
v_id := dbe_sql.next_row(context_id);
v_ints := DBE_SQL.SQL_GET_VALUES_C(context_id, 1, v_ints, i1);
exit when(v_id != 3);
end loop;
FOR i IN v_ints.FIRST .. v_ints.LAST  LOOP
        dbe_output.print_line('int' || i || ' = ' || v_ints[i]);
END LOOP;
dbe_sql.sql_unregister_context(context_id);
END;
/
-- 预期结果为：
int1 = 1
int2 = 2
int3 = 3
ANONYMOUS BLOCK EXECUTE
-- 清理环境
drop table if exists dbe_sql_tab;
DROP TABLE
-- 示例11
CREATE OR REPLACE PROCEDURE test_proc(out_int out Integer, out_char out char, out_raw out raw, out_text out text) IS
BEGIN
  out_int := 1;
  out_char := 'a';
  out_raw := 'b';
  out_text := 'c';
END;
/
CREATE PROCEDURE
DECLARE
cur NUMBER;
query varchar(2000);
ret integer;
v_int Integer;
v_char char;
v_raw raw;
v_text text;
BEGIN
  cur := DBE_SQL.REGISTER_CONTEXT();
  query := 'BEGIN test_proc(:v_int, :v_char, :v_raw, :v_text); END;';
  DBE_SQL.SQL_SET_SQL(cur, query, 2);
  DBE_SQL.SQL_BIND_VARIABLE(cur, 'v_int', v_int);
  DBE_SQL.SQL_BIND_VARIABLE(cur, 'v_char', v_char, 1024);
  DBE_SQL.SQL_BIND_VARIABLE(cur, 'v_raw', v_raw, 1024);
  DBE_SQL.SQL_BIND_VARIABLE(cur, 'v_text', v_text, 1024);
  ret := DBE_SQL.SQL_RUN(cur);
  DBE_SQL.GET_VARIABLE_RESULT_INT(cur, 'v_int', v_int);
  v_char := DBE_SQL.GET_VARIABLE_RESULT_CHAR(cur, 'v_char');
  DBE_SQL.GET_VARIABLE_RESULT_RAW(cur, 'v_raw', v_raw);
  v_text := DBE_SQL.GET_VARIABLE_RESULT_TEXT(cur, 'v_text');
  DBE_OUTPUT.PRINT_LINE('v_int = ' || v_int);
  DBE_OUTPUT.PRINT_LINE('v_char = ' || v_char);
  DBE_OUTPUT.PRINT_LINE('v_raw = ' || v_raw);
  DBE_OUTPUT.PRINT_LINE('v_text = ' || v_text);
  DBE_SQL.SQL_UNREGISTER_CONTEXT(cur);
END;
/
-- 预期结果为：
v_int = 1
v_char = a
v_raw = 0B
v_text = c
ANONYMOUS BLOCK EXECUTE
-- 清理环境
drop procedure test_proc;
DROP PROCEDURE
-- 示例12
CREATE OR REPLACE PROCEDURE test_proc(out_int out Integer[], out_char out char[], out_raw out raw[], out_text out text[]) IS
BEGIN
  out_int(0) := 1;
  out_char(0) := 'a';
  out_raw(0) := 'b';
  out_text(0) := 'c';
END;
/
CREATE PROCEDURE
DECLARE
cur NUMBER;
query varchar(2000);
ret integer;
v_int Integer[];
v_char char[];
v_raw raw[];
v_text text[];
BEGIN
  cur := DBE_SQL.REGISTER_CONTEXT();
  query := 'call test_proc(:v_int, :v_char, :v_raw, :v_text);';
  DBE_SQL.SQL_SET_SQL(cur, query, 1);
  DBE_SQL.SQL_BIND_ARRAY(cur, 'v_int', v_int);
  DBE_SQL.SQL_BIND_ARRAY(cur, 'v_char', v_char);
  DBE_SQL.SQL_BIND_ARRAY(cur, 'v_raw', v_raw);
  DBE_SQL.SQL_BIND_ARRAY(cur, 'v_text', v_text);
  ret := DBE_SQL.SQL_RUN(cur);
  DBE_SQL.GET_ARRAY_RESULT_INT(cur, 'v_int', v_int);
  DBE_SQL.GET_ARRAY_RESULT_CHAR(cur, 'v_char', v_char);
  DBE_SQL.GET_ARRAY_RESULT_RAW(cur, 'v_raw', v_raw);
  DBE_SQL.GET_ARRAY_RESULT_TEXT(cur, 'v_text', v_text);
  DBE_OUTPUT.PRINT_LINE('v_int = ' || v_int(0));
  DBE_OUTPUT.PRINT_LINE('v_char = ' || v_char(0));
  DBE_OUTPUT.PRINT_LINE('v_raw = ' || v_raw(0));
  DBE_OUTPUT.PRINT_LINE('v_text = ' || v_text(0));
  DBE_SQL.SQL_UNREGISTER_CONTEXT(cur);
END;
/
-- 预期结果为：
v_int = 1
v_char = a
v_raw = 0B
v_text = c
ANONYMOUS BLOCK EXECUTE
-- 清理环境
drop PROCEDURE test_proc;
DROP PROCEDURE
```
