华为云云数据库GaussDBDBE_UTILITY_云淘科技
接口介绍
高级功能包DBE_UTILITY支持的所有接口请参见表1。
接口名称 |
描述 |
---|---|
DBE_UTILITY.FORMAT_ERROR_BACKTRACE |
输出存储过程异常的调用堆栈。 |
DBE_UTILITY.FORMAT_ERROR_STACK |
输出存储过程异常的具体信息。 |
DBE_UTILITY.FORMAT_CALL_STACK |
输出存储过程的调用堆栈。 |
DBE_UTILITY.GET_TIME |
输出当前时间,一般用于做差得到执行时长。 |
DBE_UTILITY.CANONICALIZE |
用于给表名字符串做规范。 |
DBE_UTILITY.COMMA_TO_TABLE |
将用逗号隔开的名字列表的字符串转换为PL/SQL表名列表。 |
DBE_UTILITY.DB_VERSION |
返回数据库的版本号和兼容性版本号。 |
DBE_UTILITY.EXEC_DDL_STATEMENT |
用于执行用户输入的DDL语句。 |
DBE_UTILITY.EXPAND_SQL_TEXT_PROC |
用于展开SQL查询的视图。 |
DBE_UTILITY.GET_CPU_TIME |
返回当前CPU处理时间的测量值。 |
DBE_UTILITY.GET_ENDIANNESS |
用于获取数据库所在平台字节序的大小端信息。 |
DBE_UTILITY.GET_HASH_VALUE |
返回一个给定字符串的hash值。 |
DBE_UTILITY.GET_SQL_HASH |
输出一个给定字符串的hash值,该存储过程在不打开proc_outparam_override时使用。 |
DBE_UTILITY.IS_BIT_SET |
用于检查参数n是否存在于r。 |
DBE_UTILITY.IS_CLUSTER_DATABASE |
用于判断当前数据库是否在数据库集群模式下运行。 |
DBE_UTILITY.NAME_RESOLVE |
解析给定的对象名称,包括同义词翻译和必要的授权检查。 |
DBE_UTILITY.NAME_TOKENIZE |
用于解析a [. b [. c ]][@ dblink ]形式的名字。 |
DBE_UTILITY.OLD_CURRENT_SCHEMA |
返回当前用户环境下的数据库模式名称。 |
DBE_UTILITY.OLD_CURRENT_USER |
返回当前用户的名称。 |
DBE_UTILITY.TABLE_TO_COMMA |
将PL/SQL中的表名转换为用逗号隔开的名字列表的字符串。 |
DBE_UTILITY.GET_SQL_HASH_FUNC |
功能同DBE_UTILITY.GET_SQL_HASH,该函数在打开proc_outparam_override时使用。 |
DBE_UTILITY.EXPAND_SQL_TEXT |
内部函数,不建议用户使用。 |
DBE_UTILITY.CANONICALIZE_RET |
内部函数,不建议用户使用。 |
DBE_UTILITY.COMMA_TO_TABLE_FUN |
内部函数,不建议用户使用。 |
DBE_UTILITY.COMPILE_SCHEMA |
内部函数,不建议用户使用。 |
DBE_UTILITY.NAME_SEPARATE |
内部函数,不建议用户使用。 |
DBE_UTILITY.NAME_TOKENIZE_FUNC |
内部函数,不建议用户使用。 |
DBE_UTILITY.NAME_TOKENIZE_LOWER |
内部函数,不建议用户使用。 |
DBE_UTILITY.NAME_TOKENIZE_LOWER_FUNC |
内部函数,不建议用户使用。 |
DBE_UTILITY.PRIVILEGE_CHECK |
内部函数,不建议用户使用。 |
DBE_UTILITY.SEARCH_CLASS_WITH_NSPOID_ONAME_TYPE |
内部函数,不建议用户使用。 |
DBE_UTILITY.SEARCH_OBJECTS |
内部函数,不建议用户使用。 |
DBE_UTILITY.SEARCH_OBJECTS_SYNONYM_FILL_SECHEMA |
内部函数,不建议用户使用。 |
DBE_UTILITY.SEARCH_PROCEDURE_WITH_NSPOID_ONAME |
内部函数,不建议用户使用。 |
DBE_UTILITY.SEARCH_SYNONM_WITH_NSPOID_ONAME |
内部函数,不建议用户使用。 |
DBE_UTILITY.TABLE_TO_COMMA_FUNC |
内部函数,不建议用户使用。 |
DBE_UTILITY.USER_NAME |
内部函数,不建议用户使用。 |
DBE_UTILITY.FORMAT_ERROR_BACKTRACE
存储过程FORMAT_ERROR_BACKTRACE返回在执行过程中出现错误时,出现错误位置的调用堆栈。DBE_UTILITY.FORMAT_ERROR_BACKTRACE函数原型为:
1 2 |
DBE_UTILITY.FORMAT_ERROR_BACKTRACE() RETURN TEXT; |
DBE_UTILITY.FORMAT_ERROR_STACK
存储过程FORMAT_ERROR_STACK返回在执行过程中出现错误时,出现错误位置的具体信息。DBE_UTILITY.FORMAT_ERROR_STACK函数原型为:
1 2 |
DBE_UTILITY.FORMAT_ERROR_STACK() RETURN TEXT; |
DBE_UTILITY.FORMAT_CALL_STACK
存储过程FORMAT_CALL_STACK设置输出函数调用堆栈。DBE_UTILITY.FORMAT_CALL_STACK函数原型为:
1 2 |
DBE_UTILITY.FORMAT_CALL_STACK() RETURN TEXT; |
DBE_UTILITY.GET_TIME
存储过程GET_TIME设置输出时间,通常用于做差,单独的返回值没有意义。DBE_UTILITY.GET_TIME函数原型为:
1 2 |
DBE_UTILITY.GET_TIME() RETURN BIGINT; |
DBE_UTILITY.CANONICALIZE
存储过程CANONICALIZE用于给表名字符串做规范。该过程处理单个保留字或关键字,并删除单个标识符的空白,以便“table”成为TABLE。DBE_UTILITY.CANONICALIZE函数原型为:
1 2 3 4 5 |
DBE_UTILITY.CANONICALIZE( name IN VARCHAR2, canon_name OUT VARCHAR2, canon_len IN BINARY_INTEGER ); |
参数名称 |
描述 |
---|---|
name |
待规范的字符串。 |
canon_name |
规范好的字符串。 |
canon_len |
要规范的字符串长度(以字节为单位)。 |
DBE_UTILITY.COMMA_TO_TABLE
存储过程COMMA_TO_TABLE将用逗号隔开的名字列表的字符串转换为PL/SQL表名列表。DBE_UTILITY.COMMA_TO_TABLE函数原型为:
1 2 3 4 5 |
DBE_UTILITY.COMMA_TO_TABLE ( list IN VARCHAR2, tablen OUT BINARY_INTEGER, tab OUT uncl_array ); |
参数名称 |
描述 |
---|---|
list |
逗号隔开的名字列表字符串。 |
tablen |
列表名字的个数。 |
tab |
转换后的表名称列表。 |
DBE_UTILITY.DB_VERSION
存储过程DB_VERSION返回数据库的版本号和兼容性版本号。DBE_UTILITY.DB_VERSION函数原型为:
1 2 3 |
DBE_UTILITY.DB_VERSION ( version OUT VARCHAR2 ); |
参数名称 |
描述 |
---|---|
version |
输出参数,表示内部的数据库软件版本信息,是一个字符串。 |
DBE_UTILITY.EXEC_DDL_STATEMENT
存储过程EXEC_DDL_STATEMENT用于执行用户输入的DDL语句。DBE_UTILITY.EXEC_DDL_STATEMENT函数原型为:
1 2 3 |
DBE_UTILITY.EXEC_DDL_STATEMENT ( parse_string IN VARCHAR2 ); |
参数名称 |
描述 |
---|---|
parse_string |
需要执行的DDL语句。 |
DBE_UTILITY.EXPAND_SQL_TEXT_PROC
存储过程EXPAND_SQL_TEXT_PROC用于展开SQL查询的视图,会递归展开视图中的视图对象,一直展开显示到表。DBE_UTILITY.EXPAND_SQL_TEXT_PROC函数原型为:
1 2 3 4 |
DBE_UTILITY.EXPAND_SQL_TEXT_PROC ( input_sql_text IN CLOB, output_sql_text OUT NOCOPY CLOB ); |
参数名称 |
描述 |
---|---|
input_sql_text |
输入的SQL文本。 |
output_sql_text |
输出展开视图的SQL文本。 |
用户输入的input_sql_text参数中,SQL语句中的对象需要增加schema前缀,否则函数会报无法找到对象的错误。若设置set behavior_compat_options参数值为bind_procedure_searchpath,则无需强制指定schema前缀。
DBE_UTILITY.GET_CPU_TIME
存储过程GET_CPU_TIME返回当前CPU处理时间的测量值(以百分之一秒为单位)。DBE_UTILITY.GET_CPU_TIME函数原型为:
1 2 |
DBE_UTILITY.GET_CPU_TIME() RETURN NUMBER; |
DBE_UTILITY.GET_ENDIANNESS
存储过程GET_ENDIANNESS用于获取数据库所在平台字节序的大小端信息。DBE_UTILITY. GET_ENDIANNESS函数原型为:
1 2 |
DBE_UTILITY.GET_ENDIANNESS RETURN INTEGER; |
DBE_UTILITY.GET_HASH_VALUE
存储过程GET_HASH_VALUE返回一个给定字符串的hash值。DBE_UTILITY.GET_HASH_VALUE函数原型为:
1 2 3 4 5 |
DBE_UTILITY.GET_HASH_VALUE( name IN VARCHAR2(n), base IN INTEGER, hash_size IN INTEGER) RETURN INTEGER; |
参数名称 |
描述 |
---|---|
name |
待哈希转换的字符串。 |
base |
返回的hash值的起始值。 |
hash_size |
哈希映射到的哈希表的大小。 |
DBE_UTILITY.GET_SQL_HASH
存储过程GET_SQL_HASH通过MD5算法输出一个给定字符串的hash值。DBE_UTILITY.GET_SQL_HASH函数原型为:
1 2 3 4 5 |
DBE_UTILITY.GET_SQL_HASH( name IN VARCHAR2, hash OUT RAW, last4bytes OUT BIGINT ); |
参数名称 |
描述 |
---|---|
name |
待哈希转换的字符串。 |
hash |
完整的16进制MD5哈希值。 |
last4bytes |
MD5哈希值的最后四字节,以无符号整数形式展现。 |
设置set behavior_compat_options为非proc_outparam_override参数后,请调用DBE_UTILITY.GET_SQL_HASH函数,如调用DBE_UTILITY.GET_SQL_HASH_FUNC则会发生赋值不成功。
DBE_UTILITY.IS_BIT_SET
存储过程IS_BIT_SET用于检查参数n是否存在于r。DBE_UTILITY. IS_BIT_SET函数原型为:
1 2 3 4 |
DBE_UTILITY.IS_BIT_SET ( r IN RAW, n IN INTEGER) RETURN INTEGER; |
参数名称 |
描述 |
---|---|
r |
4字节加上实际的十六进制字符串。 |
n |
用于在二进制中判断是否存在该数值。 |
DBE_UTILITY.IS_CLUSTER_DATABASE
存储过程IS_CLUSTER_DATABASE用于判断当前数据库是否在数据库集群模式下运行。DBE_UTILITY.IS_CLUSTER_DATABASE函数原型为:
1 2 |
DBE_UTILITY.IS_CLUSTER_DATABASE RETURN BOOLEAN; |
DBE_UTILITY.NAME_RESOLVE
存储过程NAME_RESOLVE解析给定的对象名称,包括同义词翻译和必要的授权检查。DBE_UTILITY.NAME_RESOLVE函数原型为:
1 2 3 4 5 6 7 8 9 10 |
DBE_UTILITY.NAME_RESOLVE ( name IN VARCHAR2, context IN INTEGER, schema OUT VARCHAR2, part1 OUT VARCHAR2, part2 OUT VARCHAR2, dblink OUT VARCHAR2, part1_type OUT INTEGER, object_number OUT OID ); |
参数名称 |
描述 |
---|---|
name |
待解析对象名,结构为[[a.]b.]c[@d]。 |
context |
返回的hash值的起始值。 |
schema |
对象所在的模式。 |
part1 |
名称的第一部分,该字段的类型由part1_type指定。 |
part2 |
如果该字段不为空,则为子程序名称。 |
dblink |
数据库链接。 |
part1_type |
part1的类型: 5:synonym |
object_number |
对象标识。object_number在ORA数据库中类型为Number,表示对象标识,而GaussDB中对象标识类型为OID,并且不支持Number到OID的隐式转换。 |
DBE_UTILITY.NAME_TOKENIZE
存储过程NAME_TOKENIZE用于解析a [. b [. c ]][@ dblink ]形式的名字,如果名字带有双引号则去掉,否则变为大写字母。DBE_UTILITY.NAME_TOKENIZE函数原型为:
1 2 3 4 5 6 7 8 |
DBE_UTILITY.NAME_TOKENIZE ( name IN VARCHAR2, a OUT VARCHAR2, b OUT VARCHAR2, c OUT VARCHAR2, dblink OUT VARCHAR2, nextpos OUT INTEGER ); |
参数名称 |
描述 |
---|---|
name |
名字,由SQL标识符组成(比如, scott.foo@dblink)。 |
a |
名字的第一个token。 |
b |
名字的第二个token。 |
c |
名字的第三个token。 |
dblink |
数据库链接。 |
nextpos |
字符串经过解析后的下一个位置。 |
DBE_UTILITY.OLD_CURRENT_SCHEMA
存储过程OLD_CURRENT_SCHEMA返回当前用户环境下的数据库模式名称。DBE_UTILITY.OLD_CURRENT_SCHEMA函数原型为:
1 2 |
DBE_UTILITY.OLD_CURRENT_SCHEMA() RETURN VARCHAR; |
DBE_UTILITY.OLD_CURRENT_USER
存储过程OLD_CURRENT_USER返回当前用户的名称。DBE_UTILITY.OLD_CURRENT_USER函数原型为:
1 2 |
DBE_UTILITY.OLD_CURRENT_USER() RETURN VARCHAR2; |
DBE_UTILITY.TABLE_TO_COMMA
存储过程TABLE_TO_COMMA将PL/SQL中的表名转换为用逗号隔开的名字列表的字符串。DBE_UTILITY.TABLE_TO_COMMA函数原型为:
1 2 3 4 5 |
DBE_UTILITY.TABLE_TO_COMMA ( tab IN UNCL_ARRAY, tablen OUT BINARY_INTEGER, list OUT VARCHAR2 ); |
参数名称 |
描述 |
---|---|
tab |
包含表名的结构表数组。 |
tablen |
结构表中的表个数。 |
list |
以逗号分割表名的字符串。 |
DBE_UTILITY.GET_SQL_HASH_FUNC
函数GET_SQL_HASH_FUNC通过MD5算法输出一个给定字符串的hash值。DBE_UTILITY.GET_SQL_HASH_FUNC函数原型为:
1 2 3 4 5 |
DBE_UTILITY.GET_SQL_HASH_FUNC( name IN VARCHAR2, hash OUT RAW, last4bytes OUT BIGINT ); |
参数名称 |
描述 |
---|---|
name |
待哈希转换的字符串。 |
hash |
完整的16进制MD5哈希值。 |
last4bytes |
MD5哈希值的最后四字节,以无符号整数形式展现。 |
设置set behavior_compat_options = ‘proc_outparam_override’ 参数后,请调用DBE_UTILITY.GET_SQL_HASH_FUNC函数,如调用DBE_UTILITY.GET_SQL_HASH则会报参数不匹配异常。
示例
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 |
CREATE OR REPLACE PROCEDURE test_get_time1() AS declare start_time bigint; end_time bigint; BEGIN start_time:= dbe_utility.get_time (); pg_sleep(1); end_time:=dbe_utility.get_time (); dbe_output.print_line(end_time - start_time); END; / -- 给表名字符串做规范 declare cname varchar2(50); begin dbe_utility.canonicalize('seg1', cname, 50); dbe_output.put_line(cname); end; / -- 将输入的字符串转换成一个表名的数组 DECLARE tab_list VARCHAR2(100) := 't1,t2'; len BINARY_INTEGER; tab DBMS_UTILITY.LNAME_ARRAY; BEGIN dbe_output.put_line('table list is :' || tab_list); dbe_utility.comma_to_table(tab_list, len, tab); END; / -- 查看数据库的版本号和兼容性版本号 declare v_version varchar2; begin dbe_utility.db_version(v_version); v_version:=left(v_version, 8); dbe_output.print_line('version:' || v_version); end; / -- 查看当前CPU处理时间的测量值 DECLARE cputime NUMBER; BEGIN cputime := dbe_utility.get_cpu_time; dbe_output.put_line('cpu time:' || cputime); END; / -- 获取数据库所在平台字节序的大小端信息 BEGIN dbe_output.PUT_LINE(dbe_utility.GET_ENDIANNESS); END; / -- 获取一个给定字符串的hash值 DECLARE result NUMBER(28); BEGIN result := dbe_utility.get_hash_value('hello',10,10); dbe_output.put_line(result); END; / -- 判断当前数据库是否为集群模式 DECLARE is_cluster BOOLEAN; BEGIN is_cluster := dbe_utility.IS_CLUSTER_DATABASE; dbe_output.put_line('CLUSTER DATABASE: ' || CASE WHEN is_cluster THEN 'TRUE' ELSE 'FALSE' END); END; / -- 获取当前用户环境下的数据库模式名称 DECLARE schm varchar2(100); BEGIN schm := dbe_utility.old_current_schema; dbe_output.put_line('current schema: ' || schm); END; / -- 获取当前用户名称 select dbe_utility.old_current_user from sys_dummy; |
父主题: 二次封装接口(推荐)
同意关联代理商云淘科技,购买华为云产品更优惠(QQ 78315851)
内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家