华为云云数据库GaussDBDBE_SQL_云淘科技

数据类型介绍

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支持的接口请参见表1。

表1 DBE_SQL

接口名称

描述

DBE_SQL.REGISTER_CONTEXT

打开一个游标。

DBE_SQL.SQL_UNREGISTER_CONTEXT

关闭一个已打开的游标。

DBE_SQL.SQL_SET_SQL

向游标传递一组SQL语句或匿名块。

DBE_SQL.SQL_RUN

执行给定游标中的SQL语句或匿名块。

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_RESULT_CHAR

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

DBE_SQL.DBE_SQL_GET_RESULT_LONG

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

DBE_SQL.DBE_SQL_GET_RESULT_RAW

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

DBE_SQL.IS_ACTIVE

检查游标是否已打开。

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数组类型)。

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

DBE_SQL.REGISTER_CONTEXT

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

DBE_SQL打开的游标是会话级的变量,不支持跨会话调用打开的游标(如自治事务),如果调用跨会话的游标行为不可预知。

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

该函数用来解析给定游标的SQL语句或匿名块。目前语句参数仅可通过text类型传递,长度不大于1GB。

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

版本语言号,指定SQL语句不同版本的行为,1为非兼容版本,2为兼容ORA版本。

DBE_SQL.SQL_RUN

该函数用来执行一个给定的游标。该函数接收一个游标ID,执行游标中的SQL语句或匿名块。

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

查询列在返回结果中的相对位置,起始为1。

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

查询列在返回结果中的相对位置,起始为1。

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.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.LAST_ROW_COUNT

该函数用来返回最近一次NEXT_ROW执行后,获取的数据行数的累积计数。

DBE_SQL.LAST_ROW_COUNT函数的原型为:

1
2
3
DBE_SQL.LAST_ROW_COUNT(
)
RETURN INTEGER;

DBE_SQL.RUN_AND_NEXT

该函数的功能等同于在调用SQL_RUN后接着调用NEXT_ROW。

DBE_SQL.RUN_AND_NEXT函数的原型为:

1
2
3
4
DBE_SQL.RUN_AND_NEXT(
    context_id IN INTEGER
)
RETURNS INTEGER;
表26 DBE_SQL.RUN_AND_NEXT接口说明

参数名称

描述

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,
    value          IN anyelement,
    out_value_size IN int default null
)
RETURNS void;
表27 DBE_SQL.SQL_BIND_VARIABLE接口说明

参数名称

描述

context_id

被查询的游标ID。

query_string

绑定的变量名。

value

绑定的值。

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(
    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;
表28 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(
    context_id IN int,
    pos        IN int,
    column_ref IN anyarray,
    cnt        IN int,
    lower_bnd  IN int
)
RETURNS integer;
表29 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(
    context_id IN int,
    pos        IN int,
    column_ref IN anyarray,
    cnt        IN int,
    lower_bnd  IN int,
    maxsize    IN int
)
RETURNS integer;
表30 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(
    context_id  IN int,
    pos         IN int,
    column_ref  IN anyarray,
    cnt         IN int,
    lower_bnd   IN int,
    column_size IN int
)
RETURNS integer;
表31 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(
    context_id  IN int,
    pos         IN int,
    column_ref  IN anyarray,
    cnt         IN int,
    lower_bnd   IN int,
    column_size IN int
)
RETURNS integer;
表32 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(
    context_id  IN int, 
    pos         IN int,
    column_ref  IN anyarray,
    cnt         IN int,
    lower_bnd   IN int,
    column_size IN int
)
RETURNS integer;
表33 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(
    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;
表34 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(
    context_id   IN    int, 
    pos          IN    int,  
    column_value INOUT anyarray
);
表35 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(
    context_id   IN    int,
    pos          IN    int,  
    column_value INOUT anyarray
);
表36 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(
    context_id   IN    int,
    pos          IN    int, 
    column_value INOUT anyarray
);
表37 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(
    context_id   IN    int,
    pos          IN    int, 
    column_value INOUT anyarray
);
表38 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(
    context_id   IN    int,
    pos          IN    int, 
    column_value INOUT anyarray
);
表39 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(
    context_id   IN    int,
    pos          IN    int,
    column_value INOUT anyarray
);
表40 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;
表41 DBE_SQL.SQL_DESCRIBE_COLUMNS接口说明

参数名称

描述

context_id

被查询的游标ID。

col_cnt

返回的列的数量。

desc_t

返回的列的描述信息。

DBE_SQL.DESCRIBE_COLUMNS

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

DBE_SQL.DESCRIBE_COLUMNS函数的原型为:

1
2
3
4
5
DBE_SQL.DESCRIBE_COLUMNS(
    context_id IN  int, 
    col_cnt    OUT int, 
    desc_t     OUT dbe_sql.desc_tab
)
表42 DBE_SQL.DESCRIBE_COLUMNS接口说明

参数名称

描述

context_id

被查询的游标ID。

col_cnt

返回的列的数量。

desc_t

返回的列的描述信息。

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;
表43 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;
表44 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(
    context_id   IN    int,
    pos          IN    VARCHAR2,
    column_value INOUT anyelement
);
表45 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(
    context_id IN int,
    pos        IN VARCHAR2
)
RETURNS char
表46 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(
    context_id IN    int,
    pos        IN    VARCHAR2,
    value      INOUT anyelement
)
RETURNS anyelement
表47 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(
    context_id IN int,
    pos        IN VARCHAR2
)
RETURNS text
表48 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(
    context_id IN    int,
    pos        IN    VARCHAR2,
    value      INOUT anyelement
)
RETURNS anyelement
表49 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(
    context_id   IN    int,
    pos          IN    VARCHAR2,
    column_value INOUT anyarray
)
表50 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(
    context_id   IN    int,
    pos          IN    VARCHAR2,
    column_value INOUT anyarray
)
表51 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(
    context_id   IN    int,
    pos          IN    VARCHAR2,
    column_value INOUT anyarray
)
表52 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(
    context_id   IN    int,
    pos          IN    VARCHAR2,
    column_value INOUT anyarray
)
表53 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
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
-- 示例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;
/

CREATE OR REPLACE PROCEDURE test_square(n NUMBER, square OUT NUMBER) IS
BEGIN
  square := n * n;
END;
/

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;
/

-- 示例2
-- DESCRIBE_COLUMNS、RUN_AND_NEXT和LAST_ROW_COUNT接口示例
-- 创建列描述信息打印存储过程
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;
/

-- 进行功能验证
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;
/

父主题: 二次封装接口(推荐)

同意关联代理商云淘科技,购买华为云产品更优惠(QQ 78315851)

内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家