DBE_SQL
接口介绍
高级功能包DBE_SQL支持的接口请参见表1 DBE_SQL。
接口名称 |
描述 |
---|---|
打开一个游标。 |
|
关闭一个已打开的游标。 |
|
向游标传递一组SQL语句。 |
|
在游标上执行一组动态定义操作。 |
|
读取游标一行数据。 |
|
动态定义一个列。 |
|
动态定义一个char类型的列。 |
|
动态定义一个int类型的列。 |
|
动态定义一个long类型的列。 |
|
动态定义一个raw类型的列。 |
|
动态定义一个text类型的列。 |
|
动态定义一个未知列(类型不识别时入此接口)。 |
|
读取一个已动态定义的列值。 |
|
读取一个已动态定义的列值(指定char类型)。 |
|
读取一个已动态定义的列值(指定int类型)。 |
|
读取一个已动态定义的列值(指定long类型)。 |
|
读取一个已动态定义的列值(指定raw类型)。 |
|
读取一个已动态定义的列值(指定text类型)。 |
|
读取一个已动态定义的列值(类型不识别时入此接口)。 |
|
读取一个已动态定义的列值(指定char类型)。 |
|
读取一个已动态定义的列值(指定long类型)。 |
|
读取一个已动态定义的列值(指定raw类型)。 |
|
检查游标是否已打开。 |
|
DBE_SQL.LAST_ROW_COUNT |
兼容接口,暂不支持该功能。 |
DBE_SQL.RUN_AND_NEXT |
预留接口,暂不支持该功能。 |
根据语句中的变量,绑定一个值到该变量。 |
|
根据语句中的变量,绑定一组值到该变量。 |
|
动态定义一个int数组类型的列。 |
|
动态定义一个text数组类型的列。 |
|
动态定义一个raw数组类型的列。 |
|
动态定义一个bytea数组类型的列。 |
|
动态定义一个char数组类型的列。 |
|
动态定义一个数组类型的列。 |
|
读取一个已动态定义的列值(指定int数组类型)。 |
|
读取一个已动态定义的列值(指定text数组类型)。 |
|
读取一个已动态定义的列值(指定raw数组类型)。 |
|
读取一个已动态定义的列值(指定bytea数组类型)。 |
|
读取一个已动态定义的列值(指定char数组类型)。 |
|
读取一个已动态定义的列值。 |
|
描述游标读取的列信息。 |
|
存储游标读取的列信息的类型。 |
|
DESC_REC的TABLE类型。 |
|
DATE的TABLE类型。 |
|
NUMBER的TABLE类型。 |
|
VARCHAR2的TABLE类型。 |
|
绑定参数接口。 |
|
动态定义一个数组类型的列。 |
|
读取一个已动态定义的列值。 |
|
读取一个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.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,未知时报错,其余默认为关闭。
1 2 3 4 |
DBE_SQL.IS_ACTIVE( context_id IN INTEGER ) RETURN BOOLEAN; |
参数名称 |
描述 |
---|---|
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_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; |