DBE_SQL
接口介绍
高级功能包DBE_SQL支持的接口请参见表1。
接口名称 |
描述 |
---|---|
打开一个游标。 |
|
关闭一个已打开的游标。 |
|
向游标传递一组SQL语句或匿名块。 |
|
执行给定游标中的SQL语句或匿名块。 |
|
读取游标一行数据。 |
|
动态定义一个列。 |
|
动态定义一个char类型的列。 |
|
动态定义一个int类型的列。 |
|
动态定义一个long类型的列。 |
|
动态定义一个raw类型的列。 |
|
动态定义一个text类型的列。 |
|
动态定义一个未知列(类型不识别时入此接口)。 |
|
读取一个已动态定义的列值。 |
|
读取一个已动态定义的列值(指定char类型)。 |
|
读取一个已动态定义的列值(指定int类型)。 |
|
读取一个已动态定义的列值(指定long类型)。 |
|
读取一个已动态定义的列值(指定raw类型)。 |
|
读取一个已动态定义的列值(指定text类型)。 |
|
读取一个已动态定义的列值(类型不识别时入此接口)。 |
|
读取一个已动态定义的列值(指定char类型)。 |
|
读取一个已动态定义的列值(指定long类型)。 |
|
读取一个已动态定义的列值(指定raw类型)。 |
|
检查游标是否已打开。 |
|
返回获取行数的累积计数。 |
|
在游标上执行一组动态定义操作后,读取游标数据。 |
|
根据语句中的变量,绑定一个值到该变量。 |
|
根据语句中的变量,绑定一组值到该变量。 |
|
动态定义一个int数组类型的列。 |
|
动态定义一个text数组类型的列。 |
|
动态定义一个raw数组类型的列。 |
|
动态定义一个bytea数组类型的列。 |
|
动态定义一个char数组类型的列。 |
|
动态定义一个数组类型的列。 |
|
读取一个已动态定义的列值(指定int数组类型)。 |
|
读取一个已动态定义的列值(指定text数组类型)。 |
|
读取一个已动态定义的列值(指定raw数组类型)。 |
|
读取一个已动态定义的列值(指定bytea数组类型)。 |
|
读取一个已动态定义的列值(指定char数组类型)。 |
|
读取一个已动态定义的列值。 |
|
描述游标读取的列信息。 |
|
描述游标读取的列信息。 |
|
绑定参数接口。 |
|
动态定义一个数组类型的列。 |
|
读取一个已动态定义的列值。 |
|
读取一个SQL语句执行后的返回值。 |
|
读取一个SQL语句执行后的返回值(指定char类型)。 |
|
读取一个SQL语句执行后的返回值(指定raw类型)。 |
|
读取一个SQL语句执行后的返回值(指定text类型)。 |
|
读取一个SQL语句执行后的返回值(指定int类型)。 |
|
读取一个SQL语句执行后的返回值(指定text数组类型)。 |
|
读取一个SQL语句执行后的返回值(指定raw数组类型)。 |
|
读取一个SQL语句执行后的返回值(指定char数组类型)。 |
|
读取一个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
DBE_SQL.GET_RESULT( context_id IN INTEGER, pos IN INTEGER, column_value INOUT 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_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;
表15 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
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 );
表16 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 );
表17 DBE_SQL.GET_RESULT_RAW接口说明 参数名称
描述
context_id
执行的游标ID
pos
动态定义列在查询中的位置
tr
返回的列值
err
错误号。传出参数,须传入变量做参数。目前未实现,固定传出-1。
actual_length
返回值的实际长度,不能长于此值,否则截断。
- 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;
表18 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;
表19 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;
表20 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;
表21 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;
表22 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;
表23 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;
表24 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;
表25 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;
表26 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;
表27 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;
表28 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;
表29 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;
表30 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;
表31 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;
表32 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 );
表33 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 );
表34 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 );
表35 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 );
表36 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 );
表37 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 );
表38 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;
表39 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 )
表40 DBE_SQL.DESCRIBE_COLUMNS接口说明 参数名称
描述
context_id
被查询的游标ID。
col_cnt
返回的列的数量。
desc_t
返回的列的描述信息。
- DBE_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( context_id IN int, pos IN VARCHAR2, column_value INOUT 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( context_id IN int, pos IN 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
CREATE OR REPLACE FUNCTION DBE_SQL.get_variable_result_raw( context_id IN int, pos IN VARCHAR2, value INOUT 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( context_id IN int, pos IN 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
DBE_SQL.get_variable_result_int( context_id IN int, pos IN VARCHAR2, value INOUT 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( context_id IN int, pos IN VARCHAR2, column_value INOUT 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( context_id IN int, pos IN VARCHAR2, column_value INOUT 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( context_id IN int, pos IN VARCHAR2, column_value INOUT 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( context_id IN int, pos IN VARCHAR2, column_value INOUT 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 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; / |