更新时间:2024-10-14 GMT+08:00

DBE_SQL

接口介绍

高级功能包DBE_SQL支持的接口请参见表1 DBE_SQL

表1 DBE_SQL

接口名称

描述

DBE_SQL.REGISTER_CONTEXT

打开一个游标。

DBE_SQL.SQL_UNREGISTER_CONTEXT

关闭一个已打开的游标。

DBE_SQL.SQL_SET_SQL

向游标传递一组SQL语句。

DBE_SQL.SQL_RUN

在游标上执行一组动态定义操作。

DBE_SQL.NEXT_ROW

读取游标一行数据。

DBE_SQL.SET_RESULT_TYPE

动态定义一个列。

DBE_SQL.SET_RESULT_TYPE_CHAR

动态定义一个char类型的列。

DBE_SQL.SET_RESULT_TYPE_INT

动态定义一个int类型的列。

DBE_SQL.SET_RESULT_TYPE_LONG

动态定义一个long类型的列。

DBE_SQL.SET_RESULT_TYPE_RAW

动态定义一个raw类型的列。

DBE_SQL.SET_RESULT_TYPE_TEXT

动态定义一个text类型的列。

DBE_SQL.SET_RESULT_TYPE_UNKNOWN

动态定义一个未知列(类型不识别时入此接口)。

DBE_SQL.GET_RESULT

读取一个已动态定义的列值。

DBE_SQL.GET_RESULT_CHAR

读取一个已动态定义的列值(指定char类型)。

DBE_SQL.GET_RESULT_INT

读取一个已动态定义的列值(指定int类型)。

DBE_SQL.GET_RESULT_LONG

读取一个已动态定义的列值(指定long类型)。

DBE_SQL.GET_RESULT_RAW

读取一个已动态定义的列值(指定raw类型)。

DBE_SQL.GET_RESULT_TEXT

读取一个已动态定义的列值(指定text类型)。

DBE_SQL.GET_RESULT_UNKNOWN

读取一个已动态定义的列值(类型不识别时入此接口)。

DBE_SQL.DBE_SQL_GET_RES....

读取一个已动态定义的列值(指定char类型)。

DBE_SQL.DBE_SQL_GET_RES....

读取一个已动态定义的列值(指定long类型)。

DBE_SQL.DBE_SQL_GET_RES....

读取一个已动态定义的列值(指定raw类型)。

DBE_SQL.IS_ACTIVE

检查游标是否已打开。

DBE_SQL.LAST_ROW_COUNT

兼容接口,暂不支持该功能。

DBE_SQL.RUN_AND_NEXT

预留接口,暂不支持该功能。

DBE_SQL.SQL_BIND_VARIABL...

根据语句中的变量,绑定一个值到该变量。

DBE_SQL.SQL_BIND_ARRAY

根据语句中的变量,绑定一组值到该变量。

DBE_SQL.SET_RESULT_TYPE_...

动态定义一个int数组类型的列。

DBE_SQL.SET_RESULT_TYPE_...

动态定义一个text数组类型的列。

DBE_SQL.SET_RESULT_TYPE_...

动态定义一个raw数组类型的列。

DBE_SQL.SET_RESULT_TYPE_...

动态定义一个bytea数组类型的列。

DBE_SQL.SET_RESULT_TYPE_...

动态定义一个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_BYTE...

读取一个已动态定义的列值(指定bytea数组类型)。

DBE_SQL.GET_RESULTS_CHAR

读取一个已动态定义的列值(指定char数组类型)。

DBE_SQL.GET_RESULTS

读取一个已动态定义的列值。

DBE_SQL.SQL_DESCRIBE_COL...

描述游标读取的列信息。

DBE_SQL.DESC_REC

存储游标读取的列信息的类型。

DBE_SQL.DESC_TAB

DESC_REC的TABLE类型。

DBE_SQL.DATE_TABLE

DATE的TABLE类型。

DBE_SQL.NUMBER_TABLE

NUMBER的TABLE类型。

DBE_SQL.VARCHAR2_TABLE

VARCHAR2的TABLE类型。

DBE_SQL.BIND_VARIABLE

绑定参数接口。

DBE_SQL.SQL_SET_RESULTS_...

动态定义一个数组类型的列。

DBE_SQL.SQL_GET_VALUES_C

读取一个已动态定义的列值。

DBE_SQL.GET_VARIABLE_RES...

读取一个SQL语句执行后的返回值。

DBE_SQL.GET_VARIABLE_RES...

读取一个SQL语句执行后的返回值。(指定char类型)。

DBE_SQL.GET_VARIABLE_RES...

读取一个SQL语句执行后的返回值。(指定raw类型)。

DBE_SQL.GET_VARIABLE_RES...

读取一个SQL语句执行后的返回值。(指定text类型)。

DBE_SQL.GET_VARIABLE_RES...

读取一个SQL语句执行后的返回值。(指定int类型)。

DBE_SQL.GET_ARRAY_RESULT...

读取一个SQL语句执行后的返回值。(指定text数组类型)。

DBE_SQL.GET_ARRAY_RESULT...

读取一个SQL语句执行后的返回值。(指定raw数组类型)。

DBE_SQL.GET_ARRAY_RESULT...

读取一个SQL语句执行后的返回值。(指定char数组类型)。

DBE_SQL.GET_ARRAY_RESULT...

读取一个SQL语句执行后的返回值。(指定int数组类型)。

  • 建议使用dbe_sql.set_result_type及dbe_sql.get_result定义参数列。
  • 当结果集大于work_mem设定值时会触发结果集临时下盘,但最大阈值不超过512MB。
  • DBE_SQL.REGISTER_CONTEXT

    该函数用来打开一个游标,是后续dbe_sql各项操作的前提。该函数不传入任何参数,内部自动递增生成游标ID,并作为返回值返回给integer定义的变量。

    DBE_SQL.REGISTER_CONTEXT函数原型为:

    1
    2
    3
    DBE_SQL.REGISTER_CONTEXT(
    )
    RETURN INTEGER;
    
  • DBE_SQL.SQL_UNREGISTER_CONTEXT

    该函数用来关闭一个游标,是dbe_sql各项操作的结束。如果在存储过程结束时没有调用该函数,则该游标占用的内存仍然会保存,因此关闭游标非常重要。由于异常情况的发生会中途退出存储过程,导致游标未能关闭,因此建议存储过程中有异常处理,将该接口包含在内。

    DBE_SQL.SQL_UNREGISTER_CONTEXT函数原型为:

    1
    2
    3
    4
    DBE_SQL.SQL_UNREGISTER_CONTEXT(
    context_id     IN INTEGER
    )
    RETURN INTEGER;
    
    表2 DBE_SQL.SQL_UNREGISTER_CONTEXT接口说明

    参数名称

    描述

    context_id

    打算关闭的游标ID号

  • DBE_SQL.SQL_SET_SQL

    该函数用来解析给定游标的查询语句。目前语句参数仅可通过text类型传递,长度不大于1G。

    DBE_SQL.SQL_SET_SQL函数的原型为:
    1
    2
    3
    4
    5
    6
    DBE_SQL.SQL_SET_SQL(
    context_id     IN INTEGER,
    query_string IN TEXT,
    language_flag        IN INTEGER
    )
    RETURN BOOLEAN;
    
    表3 DBE_SQL.SQL_SET_SQL接口说明

    参数名称

    描述

    context_id

    执行查询语句解析的游标ID

    query_string

    执行的查询语句

    language_flag

    版本语言号,目前只支持1

  • DBE_SQL.SQL_RUN

    该函数用来执行一个给定的游标。该函数接收一个游标ID,运行后获得的数据用于后续操作。

    DBE_SQL.SQL_RUN函数的原型为:
    1
    2
    3
    4
    DBE_SQL.SQL_RUN(
    context_id     IN INTEGER,
    )
    RETURN INTEGER;
    
    表4 DBE_SQL.SQL_RUN接口说明

    参数名称

    描述

    context_id

    执行查询语句解析的游标ID

  • DBE_SQL.NEXT_ROW

    该函数返回符合查询条件的数据行数,每一次运行该接口都会获取到新的行数的集合,直到数据读取完毕获取不到新行为止。

    DBE_SQL.NEXT_ROW函数的原型为:
    1
    2
    3
    4
    DBE_SQL.NEXT_ROW(
    context_id     IN INTEGER,
    )
    RETURN INTEGER;
    
    表5 DBE_SQL.NEXT_ROW接口说明

    参数名称

    描述

    context_id

    执行的游标ID

  • DBE_SQL.SET_RESULT_TYPE

    该函数用来定义从给定游标返回的列,该接口只能应用于SELECT定义的游标中。定义的列通过查询列表的相对位置来标识,传入变量的数据类型决定了该列被定义的类型。

    DBE_SQL.SET_RESULT_TYPE函数的原型为:
    1
    2
    3
    4
    5
    6
    7
    DBE_SQL.SET_RESULT_TYPE(
    context_id     IN INTEGER,
    pos     IN INTEGER,
    column_ref   IN ANYELEMENT,
    maxsize     IN INTEGER default 1024
    )
    RETURN INTEGER;
    
    表6 DBE_SQL.SET_RESULT_TYPE接口说明

    参数名称

    描述

    context_id

    执行的游标ID

    pos

    动态定义列在查询中的位置

    column_ref

    任意类型的变量,可根据变量类型选择适当的接口动态定义列

    maxsize

    定义的列的长度

  • DBE_SQL.SET_RESULT_TYPE_CHAR

    该函数用来定义从给定游标返回的CHAR类型的列,该接口只能应用于SELECT定义的游标中。定义的列通过查询列表的相对位置来标识,传入变量的数据类型决定了该列被定义的类型。

    DBE_SQL.SET_RESULT_TYPE_CHAR函数的原型为:
    1
    2
    3
    4
    5
    6
    7
    DBE_SQL.SET_RESULT_TYPE_CHAR(
    context_id     IN INTEGER,
    pos     IN INTEGER,
    column_ref       IN TEXT,
    column_size     IN INTEGER
    )
    RETURN INTEGER;
    
    表7 DBE_SQL.SET_RESULT_TYPE_CHAR接口说明

    参数名称

    描述

    context_id

    执行的游标ID

    pos

    动态定义列在查询中的位置

    column_ref

    需要定义的某类型的参数变量

    column_size

    动态定义列长度

  • DBE_SQL.SET_RESULT_TYPE_INT

    该函数用来定义从给定游标返回的INT类型的列,该接口只能应用于SELECT定义的游标中。定义的列通过查询列表的相对位置来标识,传入变量的数据类型决定了该列被定义的类型。

    DBE_SQL.SET_RESULT_TYPE_INT函数的原型为:
    1
    2
    3
    4
    5
    DBE_SQL.SET_RESULT_TYPE_INT(
    context_id     IN INTEGER,
    pos     IN INTEGER
    )
    RETURN INTEGER;
    
    表8 DBE_SQL.SET_RESULT_TYPE_INT接口说明

    参数名称

    描述

    context_id

    执行的游标ID

    pos

    动态定义列在查询中的位置

  • DBE_SQL.SET_RESULT_TYPE_LONG

    该函数用来定义从给定游标返回的长列类型(非数据类型long)的列,该接口只能应用于SELECT定义的游标中。定义的列通过查询列表的相对位置来标识,传入变量的数据类型决定了该列被定义的类型。长列的大小限制为1G。

    DBE_SQL.SET_RESULT_TYPE_LONG函数的原型为:
    1
    2
    3
    4
    5
    DBE_SQL.SET_RESULT_TYPE_LONG(
    context_id     IN INTEGER,
    pos     IN INTEGER
    )
    RETURN INTEGER;
    
    表9 DBE_SQL.SET_RESULT_TYPE_LONG接口说明

    参数名称

    描述

    context_id

    执行的游标ID

    pos

    动态定义列在查询中的位置

  • DBE_SQL.SET_RESULT_TYPE_RAW

    该函数用来定义从给定游标返回的RAW类型的列,该接口只能应用于SELECT定义的游标中。定义的列通过查询列表的相对位置来标识,传入变量的数据类型决定了该列被定义的类型。

    DBE_SQL.SET_RESULT_TYPE_RAW函数的原型为:
    1
    2
    3
    4
    5
    6
    7
    DBE_SQL.SET_RESULT_TYPE_RAW(
    context_id     IN INTEGER,
    pos     IN INTEGER,
    column_ref       IN RAW,
    column_size     IN INTEGER
    )
    RETURN INTEGER;
    
    表10 DBE_SQL.SET_RESULT_TYPE_RAW接口说明

    参数名称

    描述

    context_id

    执行的游标ID

    pos

    动态定义列在查询中的位置

    column_ref

    RAW类型的参数变量

    column_size

    列的长度

  • DBE_SQL.SET_RESULT_TYPE_TEXT

    该函数用来定义从给定游标返回的TEXT类型的列,该接口只能应用于SELECT定义的游标中。定义的列通过查询列表的相对位置来标识,传入变量的数据类型决定了该列被定义的类型。

    DBE_SQL.SET_RESULT_TYPE_TEXT函数的原型为:
    1
    2
    3
    4
    5
    6
    DBE_SQL.DEFINE_COLUMN_CHAR(
    context_id     IN INTEGER,
    pos     IN INTEGER,
    maxsize     IN INTEGER
    )
    RETURN INTEGER;
    
    表11 DBE_SQL.SET_RESULT_TYPE_TEXT接口说明

    参数名称

    描述

    context_id

    执行的游标ID

    pos

    动态定义列在查询中的位置

    maxsize

    定义的TEXT类型的最大长度

  • DBE_SQL.SET_RESULT_TYPE_UNKNOWN

    该函数用来处理从给定游标返回的未知数据类型的列,该接口仅用于类型不识别时的报错退出。

    DBE_SQL.SET_RESULT_TYPE_UNKNOWN函数的原型为:
    1
    2
    3
    4
    5
    6
    DBE_SQL.SET_RESULT_TYPE_UNKNOWN(
    context_id     IN INTEGER,
    pos     IN INTEGER,
    col_type       IN TEXT
    )
    RETURN INTEGER;
    
    表12 DBE_SQL.SET_RESULT_TYPE_UNKNOWN接口说明

    参数名称

    描述

    context_id

    执行的游标ID

    posn

    动态定义列在查询中的位置

    col_type

    动态定义的参数

  • DBE_SQL.GET_RESULT

    该函数用来返回给定游标给定位置的游标元素值,该接口访问的是DBE_SQL.NEXT_ROW获取的数据。

    DBE_SQL.GET_RESULT函数的原型为:
    1
    2
    3
    4
    5
    6
    DBE_SQL.GET_RESULT(
    context_id                 IN    INTEGER,
    pos                 IN    INTEGER,
    column_value             INOUT ANYELEMENT
    )
    RETURN ANYELEMENT;
    
    表13 DBE_SQL.GET_RESULT接口说明

    参数名称

    描述

    context_id

    执行的游标ID

    pos

    动态定义列在查询中的位置

    column_value

    定义的列的返回值

  • DBE_SQL.GET_RESULT_CHAR

    该存储过程用来返回给定游标给定位置的游标CHAR类型的值,该接口访问的是DBE_SQL.NEXT_ROW获取的数据。

    DBE_SQL.GET_RESULT_CHAR函数的原型为:
    1
    2
    3
    4
    5
    6
    7
    DBE_SQL.GET_RESULT_CHAR(
    context_id          IN    INTEGER,
    pos                 IN    INTEGER,
    tr                  INOUT CHARACTER
    err                 INOUT NUMERIC,
    actual_length       INOUT INTEGER
    )
    
    表14 DBE_SQL.GET_RESULT_CHAR接口说明

    参数名称

    描述

    context_id

    执行的游标ID

    pos

    动态定义列在查询中的位置

    tr

    返回值

    err

    错误号。传出参数,须传入变量做参数。目前未实现,固定传出-1。

    actual_length

    返回值的实际长度

    DBE_SQL.GET_RESULT_CHAR函数的重载函数为:
    1
    2
    3
    4
    5
    DBE_SQL.GET_RESULT_CHAR(
    context_id          IN    INTEGER,
    pos                 IN    INTEGER,
    tr                  INOUT CHARACTER
    );
    
    表15 DBE_SQL.GET_RESULT_CHAR接口说明

    参数名称

    描述

    context_id

    执行的游标ID

    pos

    动态定义列在查询中的位置

    tr

    返回值

  • DBE_SQL.GET_RESULT_INT
    该函数用来返回给定游标给定位置的游标INT类型的值,该接口访问的是DBE_SQL.NEXT_ROW获取的数据。DBE_SQL.GET_RESULT_INT函数的原型为:
    1
    2
    3
    4
    5
    DBE_SQL.GET_RESULT_INT(
    context_id                 IN    INTEGER,
    pos                 IN    INTEGER
    )
    RETURN INTEGER;
    
    表16 DBE_SQL.GET_RESULT_INT接口说明

    参数名称

    描述

    context_id

    执行的游标ID

    pos

    动态定义列在查询中的位置

  • DBE_SQL.GET_RESULT_LONG

    该函数用来返回给定游标给定位置的游标长列(非long/bigint整型)类型的值,该接口访问的是DBE_SQL.NEXT_ROW获取的数据。

    DBE_SQL.GET_RESULT_LONG函数的原型为:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    DBE_SQL.GET_RESULT_LONG(
    context_id          IN INTEGER,
    pos                 IN        INTEGER,
    lgth                IN     INTEGER,
    off_set             IN   INTEGER,
    vl                  INOUT     TEXT
    vl_length           INOUT    INTEGER
    )
    RETURN RECORD;
    
    表17 DBE_SQL.GET_RESULT_LONG接口说明

    参数名称

    描述

    context_id

    执行的游标ID

    pos

    动态定义列在查询中的位置

    lgth

    返回值的长度

    off_set

    返回值的起始位置

    vl

    返回值

    vl_length

    实际返回值的长度

  • DBE_SQL.GET_RESULT_RAW

    该存储过程用来返回给定游标给定位置的游标RAW类型的值,该接口访问的是DBE_SQL.NEXT_ROW获取的数据。

    DBE_SQL.GET_RESULT_RAW存储过程的原型为:
    1
    2
    3
    4
    5
    6
    7
    DBE_SQL.GET_RESULT_RAW(
    context_id          IN  INTEGER,
    pos                 IN         INTEGER,
    tr                  INOUT      RAW
    err                 INOUT     NUMERIC,
    actual_length       INOUT INTEGER
    );
    
    表18 DBE_SQL.GET_RESULT_RAW接口说明

    参数名称

    描述

    context_id

    执行的游标ID

    pos

    动态定义列在查询中的位置

    tr

    返回的列值

    err

    错误号。传出参数,须传入变量做参数。目前未实现,固定传出-1。

    actual_length

    返回值的实际长度,不能长于此值,否则截断。

    DBE_SQL.GET_RESULT_RAW函数的重载函数为:
    1
    2
    3
    4
    5
    DBE_SQL.GET_RESULT_RAW(
    context_id          IN  INTEGER,
    pos                 IN         INTEGER,
    tr                  INOUT      RAW
    );
    
    表19 DBE_SQL.GET_RESULT_RAW接口说明

    参数名称

    描述

    context_id

    执行的游标ID

    pos

    动态定义列在查询中的位置

    tr

    返回的列值

  • DBE_SQL.GET_RESULT_TEXT

    该函数用来返回给定游标给定位置的游标TEXT类型的值,该接口访问的是DBE_SQL.NEXT_ROW获取的数据。

    DBE_SQL.GET_RESULT_TEXT函数的原型为:
    1
    2
    3
    4
    5
    DBE_SQL.GET_RESULT_TEXT(
    context_id           IN  INTEGER,
    pos                 IN         INTEGER
    )
    RETURN TEXT;
    
    表20 DBE_SQL.GET_RESULT_TEXT接口说明

    参数名称

    描述

    context_id

    执行的游标ID

    pos

    动态定义列在查询中的位置

  • DBE_SQL.GET_RESULT_UNKNOWN

    该函数用来返回给定游标给定位置的游标未知类型的值,该接口为类型不支持时的报错处理接口。

    DBE_SQL.GET_RESULT_UNKNOWN函数的原型为:
    1
    2
    3
    4
    5
    6
    DBE_SQL.GET_RESULT_UNKNOWN(
    context_id          IN    INTEGER,
    pos                 IN           INTEGER,
    col_type         IN      TEXT
    )
    RETURN TEXT;
    
    表21 DBE_SQL.GET_RESULT_UNKNOWN接口说明

    参数名称

    描述

    context_id

    执行的游标ID

    pos

    动态定义列在查询中的位置

    col_type

    返回的参数类型

  • DBE_SQL.DBE_SQL_GET_RESULT_CHAR

    该函数用来返回给定游标给定位置的游标CHAR类型的值,该接口访问的是DBE_SQL.NEXT_ROW获取的数据。和DBE_SQL.GET_RESULT_CHAR的区别是,不设置返回值长度,返回整个字符串。

    DBE_SQL.DBE_SQL_GET_RESULT_CHAR函数的原型为:
    1
    2
    3
    4
    5
    DBE_SQL.DBE_SQL_GET_RESULT_CHAR(
    context_id     IN    INTEGER,
    pos            IN    INTEGER
    )
    RETURN CHARACTER;
    
    表22 DBE_SQL.GET_RESULT_CHAR接口说明

    参数名称

    描述

    context_id

    执行的游标ID

    pos

    动态定义列在查询中的位置

  • 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函数的原型为:
    1
    2
    3
    4
    5
    DBE_SQL.DBE_SQL_GET_RESULT_LONG(
    context_id          IN INTEGER,
    pos                 IN INTEGER
    )
    RETURN BIGINT;
    
    表23 DBE_SQL.DBE_SQL_GET_RESULT_LONG接口说明

    参数名称

    描述

    context_id

    执行的游标ID

    pos

    动态定义列在查询中的位置

  • DBE_SQL.DBE_SQL_GET_RESULT_RAW

    该函数用来返回给定游标给定位置的游标RAW类型的值,该接口访问的是DBE_SQL.NEXT_ROW获取的数据。

    和函数DBE_SQL.GET_RESULT_RAW的区别是,不设置返回值长度,返回整个字符串。

    DBE_SQL.DBE_SQL_GET_RESULT_RAW函数的原型为:
    1
    2
    3
    4
    5
    6
    DBE_SQL.GET_RESULT_RAW(
    context_id          IN  INTEGER,
    pos                 IN         INTEGER,
    tr                  INOUT      RAW
    )
    RETURN RAW;
    
    表24 DBE_SQL.GET_RESULT_RAW接口说明

    参数名称

    描述

    context_id

    执行的游标ID

    pos

    动态定义列在查询中的位置

  • DBE_SQL.IS_ACTIVE

该函数用来返回游标的当前状态:打开、解析、执行、定义。取值是为TRUE,关闭后为FALSE,未知时报错,其余默认为关闭。

DBE_SQL.IS_ACTIVE函数的原型为:
1
2
3
4
DBE_SQL.IS_ACTIVE(
context_id                 IN    INTEGER
)
RETURN BOOLEAN;
表25 DBE_SQL.IS_ACTIVE接口说明

参数名称

描述

context_id

被查询的游标ID

  • DBE_SQL.SQL_BIND_VARIABLE

    该函数用来绑定一个参数到SQL语句,当执行SQL语句时,会根据该绑定的值来执行。

    DBE_SQL.SQL_BIND_VARIABLE函数的原型为:

    1
    2
    3
    4
    5
    6
    7
    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;
    
    表26 DBE_SQL.SQL_BIND_VARIABLE接口说明

    参数名称

    描述

    context_id

    被查询的游标ID。

    query_string

    绑定的变量名。

    language_flag

    绑定的值。

    out_value_size

    返回值的大小,默认值为null。

  • DBE_SQL.SQL_BIND_ARRAY

    该函数用来绑定一组参数到SQL语句,当执行SQL语句时,会根据该绑定的数组来执行。

    DBE_SQL.SQL_BIND_ARRAY函数的原型为:

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    DBE_SQL.SQL_BIND_ARRAY(
        IN context_id int,
        IN query_string text,
        IN value anyarray
    )
    RETURNS void;
    DBE_SQL.SQL_BIND_ARRAY(
        IN context_id int,
        IN query_string text,
        IN value anyarray,
        IN lower_index int, 
        IN higher_index int
    )
    RETURNS void;
    
    表27 DBE_SQL.SQL_BIND_ARRAY接口说明

    参数名称

    描述

    context_id

    被查询的游标ID。

    query_string

    绑定的变量名

    value

    绑定的数组

    lower_index

    绑定数组的最小下标

    higher_index

    绑定数组的最大下标

  • DBE_SQL.SET_RESULT_TYPE_INTS

    该函数用来定义从给定游标返回的INT数组类型的列,该接口只能应用于SELECT定义的游标中。定义的列通过查询列表的相对位置来标识,传入变量的数据类型决定了该列被定义的类型。

    DBE_SQL.SET_RESULT_TYPE_INTS函数的原型为:

    1
    2
    3
    4
    5
    6
    7
    8
    DBE_SQL.SET_RESULT_TYPE_INTS(
        IN context_id int,
        IN pos int,
        IN column_ref anyarray,
        IN cnt int,
        IN lower_bnd int
    )
    RETURNS integer;
    
    表28 DBE_SQL.SET_RESULT_TYPE_INTS接口说明

    参数名称

    描述

    context_id

    被查询的游标ID

    pos

    动态定义列在查询中的位置

    column_ref

    标记返回的数组类型

    cnt

    标记一次获取多少个值

    lower_bnd

    标记返回数组时的开始下标

  • DBE_SQL.SET_RESULT_TYPE_TEXTS

    该函数用来定义从给定游标返回的TEXT数组类型的列,该接口只能应用于SELECT定义的游标中。定义的列通过查询列表的相对位置来标识,传入变量的数据类型决定了该列被定义的类型。

    DBE_SQL.SET_RESULT_TYPE_TEXTS函数的原型为:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    DBE_SQL.SET_RESULT_TYPE_TEXTS(
        IN context_id int,
        IN pos int,
        IN column_ref anyarray,
        IN cnt int,
        IN lower_bnd int,
        IN maxsize int
    )
    RETURNS integer;
    
    表29 DBE_SQL.SET_RESULT_TYPE_TEXTS接口说明

    参数名称

    描述

    context_id

    被查询的游标ID

    pos

    动态定义列在查询中的位置

    column_ref

    标记返回的数组类型

    cnt

    标记一次获取多少个值

    lower_bnd

    标记返回数组时的开始下标

    maxsize

    定义的TEXT类型的最大长度

  • DBE_SQL.SET_RESULT_TYPE_RAWS

    该函数用来定义从给定游标返回的RAW数组类型的列,该接口只能应用于SELECT定义的游标中。定义的列通过查询列表的相对位置来标识,传入变量的数据类型决定了该列被定义的类型。

    DBE_SQL.SET_RESULT_TYPE_RAWS函数的原型为:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    DBE_SQL.set_result_type_raws(
        IN context_id int,
        IN pos int,
        IN column_ref anyarray,
        IN cnt int,
        IN lower_bnd int,
        IN column_size int
    )
    RETURNS integer;
    
    表30 DBE_SQL.SET_RESULT_TYPE_RAWS接口说明

    参数名称

    描述

    context_id

    被查询的游标ID

    pos

    动态定义列在查询中的位置

    column_ref

    标记返回的数组类型

    cnt

    标记一次获取多少个值

    lower_bnd

    标记返回数组时的开始下标

    column_size

    列的长度

  • DBE_SQL.SET_RESULT_TYPE_BYTEAS

    该函数用来定义从给定游标返回的BYTEA数组类型的列,该接口只能应用于SELECT定义的游标中。定义的列通过查询列表的相对位置来标识,传入变量的数据类型决定了该列被定义的类型。

    DBE_SQL.SET_RESULT_TYPE_BYTEAS函数的原型为:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    DBE_SQL.set_result_type_byteas(
        IN context_id int,
        IN pos int,
        IN column_ref anyarray,
        IN cnt int,
        IN lower_bnd int,
        IN column_size int
    )
    RETURNS integer;
    
    表31 DBE_SQL.SET_RESULT_TYPE_BYTEAS接口说明

    参数名称

    描述

    context_id

    被查询的游标ID

    pos

    动态定义列在查询中的位置

    column_ref

    标记返回的数组类型

    cnt

    标记一次获取多少个值

    lower_bnd

    标记返回数组时的开始下标

    column_size

    列的长度

  • DBE_SQL.SET_RESULT_TYPE_CHARS

    该函数用来定义从给定游标返回的CHAR数组类型的列,该接口只能应用于SELECT定义的游标中。定义的列通过查询列表的相对位置来标识,传入变量的数据类型决定了该列被定义的类型。

    DBE_SQL.SET_RESULT_TYPE_CHARS函数的原型为:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    DBE_SQL.SET_RESULT_TYPE_CHARS(
        IN context_id int, 
        IN pos int,
        IN column_ref anyarray,
        IN cnt int,
        IN lower_bnd int,
        IN column_size int
    )
    RETURNS integer;
    
    表32 DBE_SQL.SET_RESULT_TYPE_CHARS接口说明

    参数名称

    描述

    context_id

    被查询的游标ID

    pos

    动态定义列在查询中的位置

    column_ref

    标记返回的数组类型

    cnt

    标记一次获取多少个值

    lower_bnd

    标记返回数组时的开始下标

    column_size

    列的长度

  • DBE_SQL.SET_RESULTS_TYPE

    该函数用来定义从给定游标返回的列,该接口只能应用于SELECT定义的游标中。定义的列通过查询列表的相对位置来标识,传入变量的数据类型决定了该列被定义的类型。

    DBE_SQL.SET_RESULTS_TYPE函数的原型为:

    1
    2
    3
    4
    5
    6
    7
    8
    DBE_SQL.SET_RESULTS_TYPE(
        IN context_id int,
        IN pos int,
        IN column_ref anyarray,
        IN cnt int,
        IN lower_bnd int,
        IN maxsize int  DEFAULT 1024
    ) returns void;
    
    表33 DBE_SQL.SET_RESULTS_TYPE接口说明

    参数名称

    描述

    context_id

    被查询的游标ID

    pos

    动态定义列在查询中的位置

    column_ref

    标记返回的数组类型

    cnt

    标记一次获取多少个值

    lower_bnd

    标记返回数组时的开始下标

    maxsize

    定义的类型的最大长度

  • DBE_SQL.GET_RESULTS_INT

    该函数用来返回给定游标给定位置的游标INT数组类型的值,该接口访问的是DBE_SQL.NEXT_ROW获取的数据。

    DBE_SQL.GET_RESULTS_INT函数的原型为:

    1
    2
    3
    4
    5
    DBE_SQL.GET_RESULTS_INT(
        IN context_id int, 
        IN pos int,  
        INOUT column_value anyarray
    );
    
    表34 DBE_SQL.GET_RESULTS_INT接口说明

    参数名称

    描述

    context_id

    被查询的游标ID

    pos

    动态定义列在查询中的位置

    column_value

    返回值

  • DBE_SQL.GET_RESULTS_TEXT

    该函数用来返回给定游标给定位置的游标TEXT数组类型的值,该接口访问的是DBE_SQL.NEXT_ROW获取的数据。

    DBE_SQL.GET_RESULTS_TEXT函数的原型为:

    1
    2
    3
    4
    5
    DBE_SQL.GET_RESULTS_TEXT(
        IN context_id int,
        IN pos int,  
        INOUT column_value anyarray
    );
    
    表35 DBE_SQL.GET_RESULTS_TEXT接口说明

    参数名称

    描述

    context_id

    被查询的游标ID

    pos

    动态定义列在查询中的位置

    column_value

    返回值

  • DBE_SQL.GET_RESULTS_RAW

    该函数用来返回给定游标给定位置的游标RAW数组类型的值,该接口访问的是DBE_SQL.NEXT_ROW获取的数据。

    DBE_SQL.GET_RESULTS_RAW函数的原型为:

    1
    2
    3
    4
    5
    DBE_SQL.GET_RESULTS_RAW(
        IN context_id int,
        IN pos int, 
        INOUT column_value anyarray
    );
    
    表36 DBE_SQL.GET_RESULTS_RAW接口说明

    参数名称

    描述

    context_id

    被查询的游标ID

    pos

    动态定义列在查询中的位置

    column_value

    返回值

  • DBE_SQL.GET_RESULTS_BYTEA

    该函数用来返回给定游标给定位置的游标BYTEA数组类型的值,该接口访问的是DBE_SQL.NEXT_ROW获取的数据。

    DBE_SQL.GET_RESULTS_BYTEA函数的原型为:

    1
    2
    3
    4
    5
    DBE_SQL.GET_RESULTS_BYTEA(
        IN context_id int,
        IN pos int, 
        INOUT column_value anyarray
    );
    
    表37 DBE_SQL.GET_RESULTS_BYTEA接口说明

    参数名称

    描述

    context_id

    被查询的游标ID

    pos

    动态定义列在查询中的位置

    column_value

    返回值

  • DBE_SQL.GET_RESULTS_CHAR

    该函数用来返回给定游标给定位置的游标CHAR数组类型的值,该接口访问的是DBE_SQL.NEXT_ROW获取的数据。

    DBE_SQL.GET_RESULTS_CHAR函数的原型为:

    1
    2
    3
    4
    5
    DBE_SQL.GET_RESULTS_CHAR(
        IN context_id int, 
        IN pos int,  
        INOUT column_value anyarray
    );
    
    表38 DBE_SQL.GET_RESULTS_CHAR接口说明

    参数名称

    描述

    context_id

    被查询的游标ID

    pos

    动态定义列在查询中的位置

    column_value

    返回值

  • DBE_SQL.GET_RESULTS

    该函数用来返回给定游标给定位置的游标数组类型的值,该接口访问的是DBE_SQL.NEXT_ROW获取的数据。

    由于DBE_SQL.GET_RESULTS底层机制通过数组实现,当用不同的数组获取同一列的返回值时,会由于内部索引的不连续向数组中填充NULL值来确保数组本身索引的连续性,这会导致返回结果数组的长度和Oracle的不一致。

    DBE_SQL.GET_RESULTS函数的原型为:

    1
    2
    3
    4
    5
    DBE_SQL.GET_RESULTS(
        IN context_id int,
        IN pos int,
        INOUT column_value anyarray
    );
    
    表39 DBE_SQL.GET_RESULTS接口说明

    参数名称

    描述

    context_id

    被查询的游标ID

    pos

    动态定义列在查询中的位置

    column_value

    返回值

  • DBE_SQL.SQL_DESCRIBE_COLUMNS

    该函数用来描述列信息,该接口只能应用于SELECT定义的游标中。

    DBE_SQL.SQL_DESCRIBE_COLUMNS函数的原型为:

    1
    2
    3
    4
    5
    DBE_SQL.SQL_DESCRIBE_COLUMNS(
        context_id in int, 
        col_cnt inout int, 
        desc_t inout dbe_sql.desc_tab
    )RETURNS record ;
    
    表40 DBE_SQL.SQL_DESCRIBE_COLUMNS接口说明

    参数名称

    描述

    context_id

    被查询的游标ID

    col_cnt

    返回的列的数量

    desc_t

    返回的列的描述信息

  • DBE_SQL.DESC_REC

    该类型是复合类型,用来存储SQL_DESCRIBE_COLUMNS接口中的描述信息。

    DBE_SQL.DESC_REC函数的原型为:

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    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函数的原型为:

    1
    CREATE TYPE DBE_SQL.DESC_TAB AS TABLE OF DBE_SQL.DESC_REC;
    

  • DBE_SQL.DATE_TABLE

    该类型是DATE的TABLE类型,通过TABLE OF语法实现。

    DBE_SQL.DATE_TABLE函数的原型为:

    1
    CREATE TYPE DBE_SQL.DATE_TABLE AS TABLE OF DATE;
    

  • DBE_SQL.NUMBER_TABLE

    该类型是NUMBER的TABLE类型,通过TABLE OF语法实现。

    DBE_SQL.NUMBER_TABLE函数的原型为:

    1
    CREATE TYPE DBE_SQL.NUMBER_TABLE AS TABLE OF NUMBER;
    

  • DBE_SQL.VARCHAR2_TABLE

    该类型是VARCHAR2的TABLE类型,通过TABLE OF语法实现。

    DBE_SQL.VARCHAR2函数的原型为:

    1
    CREATE TYPE DBE_SQL.VARCHAR2_TABLE AS TABLE OF VARCHAR2(2000);
    

  • DBE_SQL.BIND_VARIABLE

    该函数是绑定参数接口,建议使用DBE_SQL.SQL_BIND_VARIABLE。

  • DBE_SQL.SQL_SET_RESULTS_TYPE_C

    该函数是动态定义一个数组类型的列,不建议用户使用。

    DBE_SQL.SQL_SET_RESULTS_TYPE_C函数的原型为:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    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;
    
    表41 DBE_SQL.SQL_SET_RESULTS_TYPE_C接口说明

    参数名称

    描述

    context_id

    被查询的游标ID

    pos

    动态定义列在查询中的位置

    column_ref

    标记返回的数组类型

    cnt

    标记一次获取多少个值

    lower_bnd

    标记返回数组时的开始下标

    col_type

    标记返回的数组类型对应的变量类型

    maxsize

    定义的类型的最大长度

  • DBE_SQL.SQL_GET_VALUES_C

    该函数是读取一个已动态定义的列值,不建议用户使用。

    DBE_SQL.SQL_GET_VALUES_C函数的原型为:

    1
    2
    3
    4
    5
    6
    DBE_SQL.sql_get_values_c(
        context_id in int,
        pos in int,
        results_type inout anyarray,
        result_type in anyelement
    )return anyarray;
    
    表42 DBE_SQL.SQL_GET_VALUES_C接口说明

    参数名称

    描述

    context_id

    被查询的游标ID

    pos

    参数位置信息

    results_type

    获取的结果

    result_type

    获取的结果类型

  • DBE_SQL.GET_VARIABLE_RESULT

    该函数用来返回绑定的OUT参数的值,可以用来获取存储过程中的OUT参数。

    DBE_SQL.GET_VARIABLE_RESULT函数的原型为:

    1
    2
    3
    4
    5
    DBE_SQL.get_variable_result(
        IN context_id int,
        IN pos VARCHAR2,
        INOUT column_value anyelement
    );
    
    表43 DBE_SQL.GET_VARIABLE_RESULT接口说明

    参数名称

    描述

    context_id

    被查询的游标ID

    pos

    绑定的参数名

    column_value

    返回值

  • DBE_SQL.GET_VARIABLE_RESULT_CHAR

    该函数用来返回绑定的CHAR类型的OUT参数的值,可以用来获取存储过程中的OUT参数。

    DBE_SQL.GET_VARIABLE_RESULT_CHAR函数的原型为:

    1
    2
    3
    4
    5
    DBE_SQL.get_variable_result_char(
        IN context_id int,
        IN pos VARCHAR2
    )
    RETURNS char
    
    表44 DBE_SQL.GET_VARIABLE_RESULT_CHAR接口说明

    参数名称

    描述

    context_id

    被查询的游标ID

    pos

    绑定的参数名

  • DBE_SQL.GET_VARIABLE_RESULT_RAW

    该函数用来返回绑定的RAW类型的OUT参数的值,可以用来获取存储过程中的OUT参数。

    DBE_SQL.GET_VARIABLE_RESULT_RAW函数的原型为:

    1
    2
    3
    4
    5
    6
    CREATE OR REPLACE FUNCTION DBE_SQL.get_variable_result_raw(
        IN context_id int,
        IN pos VARCHAR2,
        INOUT value anyelement
    )
    RETURNS anyelement
    
    表45 DBE_SQL.GET_VARIABLE_RESULT_RAW接口说明

    参数名称

    描述

    context_id

    被查询的游标ID

    pos

    绑定的参数名

    value

    返回值

  • DBE_SQL.GET_VARIABLE_RESULT_TEXT

    该函数用来返回绑定的TEXT类型的OUT参数的值,可以用来获取存储过程中的OUT参数。

    DBE_SQL.GET_VARIABLE_RESULT_TEXT函数的原型为:

    1
    2
    3
    4
    5
    CREATE OR REPLACE FUNCTION DBE_SQL.get_variable_result_text(
        IN context_id int,
        IN pos VARCHAR2
    )
    RETURNS text
    
    表46 DBE_SQL.GET_VARIABLE_RESULT_TEXT接口说明

    参数名称

    描述

    context_id

    被查询的游标ID

    pos

    绑定的参数名

  • DBE_SQL.GET_VARIABLE_RESULT_INT

    该函数用来返回绑定的INT类型的OUT参数的值,可以用来获取存储过程中的OUT参数。

    DBE_SQL.GET_VARIABLE_RESULT_INT函数的原型为:

    1
    2
    3
    4
    5
    6
    DBE_SQL.get_variable_result_int(
        IN context_id int,
        IN pos VARCHAR2,
        INOUT value anyelement
    )
    RETURNS anyelement
    
    表47 DBE_SQL.GET_VARIABLE_RESULT_INT接口说明

    参数名称

    描述

    context_id

    被查询的游标ID

    pos

    绑定的参数名

    value

    返回值

  • DBE_SQL.GET_ARRAY_RESULT_TEXT

    该函数用来返回绑定的TEXT数组类型的OUT参数的值,可以用来获取存储过程中的OUT参数。

    DBE_SQL.GET_ARRAY_RESULT_TEXT函数的原型为:

    1
    2
    3
    4
    5
    DBE_SQL.get_array_result_text(
        IN context_id int,
        IN pos VARCHAR2,
        INOUT column_value anyarray
    )
    
    表48 DBE_SQL.GET_ARRAY_RESULT_TEXT接口说明

    参数名称

    描述

    context_id

    被查询的游标ID

    pos

    绑定的参数名

    column_value

    返回值

  • DBE_SQL.GET_ARRAY_RESULT_RAW

    该函数用来返回绑定的RAW数组类型的OUT参数的值,可以用来获取存储过程中的OUT参数。

    DBE_SQL.GET_ARRAY_RESULT_RAW函数的原型为:

    1
    2
    3
    4
    5
    DBE_SQL.get_array_result_raw(
        IN context_id int,
        IN pos VARCHAR2,
        INOUT column_value anyarray
    )
    
    表49 DBE_SQL.GET_ARRAY_RESULT_RAW接口说明

    参数名称

    描述

    context_id

    被查询的游标ID

    pos

    绑定的参数名

    column_value

    返回值

  • DBE_SQL.GET_ARRAY_RESULT_CHAR

    该函数用来返回绑定的CHAR数组类型的OUT参数的值,可以用来获取存储过程中的OUT参数。

    DBE_SQL.GET_ARRAY_RESULT_CHAR函数的原型为:

    1
    2
    3
    4
    5
    DBE_SQL.get_array_result_char(
        IN context_id int,
        IN pos VARCHAR2,
        INOUT column_value anyarray
    )
    
    表50 DBE_SQL.GET_ARRAY_RESULT_CHAR接口说明

    参数名称

    描述

    context_id

    被查询的游标ID

    pos

    绑定的参数名

    column_value

    返回值

  • DBE_SQL.GET_ARRAY_RESULT_INT

    该函数用来返回绑定的INT数组类型的OUT参数的值,可以用来获取存储过程中的OUT参数。

    DBE_SQL.GET_ARRAY_RESULT_INT函数的原型为:

    1
    2
    3
    4
    5
    DBE_SQL.get_array_result_int(
        IN context_id int,
        IN pos VARCHAR2,
        INOUT column_value anyarray
    )
    
    表51 DBE_SQL.GET_ARRAY_RESULT_INT接口说明

    参数名称

    描述

    context_id

    被查询的游标ID

    pos

    绑定的参数名

    column_value

    返回值

示例

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
--在存储过程中操作raw数据
openGauss=# create or replace procedure pro_dbe_sql_all_02(in_raw raw,v_in int,v_offset int)
as 
context_id int;
v_id int;
v_info bytea :=1;
query varchar(2000);
execute_ret int;
define_column_ret_raw bytea :='1';
define_column_ret int;
begin
drop table if exists pro_dbe_sql_all_tb1_02 ;
create table pro_dbe_sql_all_tb1_02(a int ,b blob);
insert into pro_dbe_sql_all_tb1_02 values(1,HEXTORAW('DEADBEEE'));
insert into pro_dbe_sql_all_tb1_02 values(2,in_raw);
query := 'select * from pro_dbe_sql_all_tb1_02 order by 1';
--打开游标
context_id := dbe_sql.register_context();
--编译游标
dbe_sql.sql_set_sql(context_id, query, 1);
--定义列
define_column_ret:= dbe_sql.set_result_type(context_id,1,v_id);
define_column_ret_raw:= dbe_sql.set_result_type_raw(context_id,2,v_info,10);
--执行
execute_ret := dbe_sql.sql_run(context_id);
loop 
exit when (dbe_sql.next_row(cursorid) <= 0);
--获取值
dbe_sql.get_result(context_id,1,v_id);
dbe_sql.get_result_raw(context_id,2,v_info,v_in,v_offset);
--输出结果
dbe_output.print_line('id:'|| v_id || ' info:' || v_info);
end loop;
--关闭游标
dbe_sql.sql_unregister_context(context_id);
end;
/
--调用存储过程
openGauss=# call pro_dbe_sql_all_02(HEXTORAW('DEADBEEF'),0,1);

--删除存储过程
openGauss=# DROP PROCEDURE pro_dbe_sql_all_02;