计算
弹性云服务器 ECS
Flexus云服务
裸金属服务器 BMS
弹性伸缩 AS
镜像服务 IMS
专属主机 DeH
函数工作流 FunctionGraph
云手机服务器 CPH
Huawei Cloud EulerOS
网络
虚拟私有云 VPC
弹性公网IP EIP
虚拟专用网络 VPN
弹性负载均衡 ELB
NAT网关 NAT
云专线 DC
VPC终端节点 VPCEP
云连接 CC
企业路由器 ER
企业交换机 ESW
全球加速 GA
安全与合规
安全技术与应用
Web应用防火墙 WAF
企业主机安全 HSS
云防火墙 CFW
安全云脑 SecMaster
DDoS防护 AAD
数据加密服务 DEW
数据库安全服务 DBSS
云堡垒机 CBH
数据安全中心 DSC
云证书管理服务 CCM
边缘安全 EdgeSec
威胁检测服务 MTD
CDN与智能边缘
内容分发网络 CDN
CloudPond云服务
智能边缘云 IEC
迁移
主机迁移服务 SMS
对象存储迁移服务 OMS
云数据迁移 CDM
迁移中心 MGC
大数据
MapReduce服务 MRS
数据湖探索 DLI
表格存储服务 CloudTable
云搜索服务 CSS
数据接入服务 DIS
数据仓库服务 GaussDB(DWS)
数据治理中心 DataArts Studio
数据可视化 DLV
数据湖工厂 DLF
湖仓构建 LakeFormation
企业应用
云桌面 Workspace
应用与数据集成平台 ROMA Connect
云解析服务 DNS
专属云
专属计算集群 DCC
IoT物联网
IoT物联网
设备接入 IoTDA
智能边缘平台 IEF
用户服务
账号中心
费用中心
成本中心
资源中心
企业管理
工单管理
国际站常见问题
ICP备案
我的凭证
支持计划
客户运营能力
合作伙伴支持计划
专业服务
区块链
区块链服务 BCS
Web3节点引擎服务 NES
解决方案
SAP
高性能计算 HPC
视频
视频直播 Live
视频点播 VOD
媒体处理 MPC
实时音视频 SparkRTC
数字内容生产线 MetaStudio
存储
对象存储服务 OBS
云硬盘 EVS
云备份 CBR
存储容灾服务 SDRS
高性能弹性文件服务 SFS Turbo
弹性文件服务 SFS
云硬盘备份 VBS
云服务器备份 CSBS
数据快递服务 DES
专属分布式存储服务 DSS
容器
云容器引擎 CCE
容器镜像服务 SWR
应用服务网格 ASM
华为云UCS
云容器实例 CCI
管理与监管
云监控服务 CES
统一身份认证服务 IAM
资源编排服务 RFS
云审计服务 CTS
标签管理服务 TMS
云日志服务 LTS
配置审计 Config
资源访问管理 RAM
消息通知服务 SMN
应用运维管理 AOM
应用性能管理 APM
组织 Organizations
优化顾问 OA
IAM 身份中心
云运维中心 COC
资源治理中心 RGC
应用身份管理服务 OneAccess
数据库
云数据库 RDS
文档数据库服务 DDS
数据管理服务 DAS
数据复制服务 DRS
云数据库 GeminiDB
云数据库 GaussDB
分布式数据库中间件 DDM
数据库和应用迁移 UGO
云数据库 TaurusDB
人工智能
人脸识别服务 FRS
图引擎服务 GES
图像识别 Image
内容审核 Moderation
文字识别 OCR
AI开发平台ModelArts
图像搜索 ImageSearch
对话机器人服务 CBS
华为HiLens
视频智能分析服务 VIAS
语音交互服务 SIS
应用中间件
分布式缓存服务 DCS
API网关 APIG
微服务引擎 CSE
分布式消息服务Kafka版
分布式消息服务RabbitMQ版
分布式消息服务RocketMQ版
多活高可用服务 MAS
事件网格 EG
企业协同
华为云会议 Meeting
云通信
消息&短信 MSGSMS
云生态
合作伙伴中心
云商店
开发者工具
SDK开发指南
API签名指南
Terraform
华为云命令行工具服务 KooCLI
其他
产品价格详情
系统权限
管理控制台
客户关联华为云合作伙伴须知
消息中心
公共问题
开发与运维
应用管理与运维平台 ServiceStage
软件开发生产线 CodeArts
需求管理 CodeArts Req
部署 CodeArts Deploy
性能测试 CodeArts PerfTest
编译构建 CodeArts Build
流水线 CodeArts Pipeline
制品仓库 CodeArts Artifact
测试计划 CodeArts TestPlan
代码检查 CodeArts Check
代码托管 CodeArts Repo
云应用引擎 CAE
开天aPaaS
云消息服务 KooMessage
云手机服务 KooPhone
云空间服务 KooDrive
本文导读

展开导读

DBE_UTILITY

更新时间:2024-05-07 GMT+08:00

接口介绍

高级功能包DBE_UTILITY支持的所有接口请参见表1

表1 DBE_UTILITY

接口名称

描述

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
    );
    
    表2 DBE_UTILITY.CANONICALIZE接口说明

    参数名称

    描述

    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
    ); 
    
    表3 DBE_UTILITY.COMMA_TO_TABLE接口说明

    参数名称

    描述

    list

    逗号隔开的名字列表字符串。

    tablen

    列表名字的个数。

    tab

    转换后的表名称列表。

  • DBE_UTILITY.DB_VERSION

    存储过程DB_VERSION返回数据库的版本号和兼容性版本号。DBE_UTILITY.DB_VERSION函数原型为:

    1
    2
    3
    DBE_UTILITY.DB_VERSION (
        version OUT VARCHAR2
    );
    
    表4 DBE_UTILITY.DB_VERSION接口说明

    参数名称

    描述

    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
    );
    
    表5 DBE_UTILITY.EXEC_DDL_STATEMENT接口说明

    参数名称

    描述

    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
    );
    
    表6 DBE_UTILITY.EXPAND_SQL_TEXT_PROC接口说明

    参数名称

    描述

    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;
    
    表7 DBE_UTILITY.GET_HASH_VALUE接口说明

    参数名称

    描述

    name

    待哈希转换的字符串。

    base

    返回哈希值的起始值。

    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
    );
    
    表8 DBE_UTILITY.GET_SQL_HASH接口说明

    参数名称

    描述

    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;
    
    表9 DBE_UTILITY.IS_BIT_SET接口说明

    参数名称

    描述

    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
    );
    
    表10 DBE_UTILITY.NAME_RESOLVE接口说明

    参数名称

    描述

    name

    待解析对象名,结构为[[a.]b.]c[@d]。

    context

    返回哈希值的起始值。

    schema

    对象所在的模式。

    part1

    名称的第一部分,该字段的类型由part1_type指定。

    part2

    如果该字段不为空,则为子程序名称。

    dblink

    数据库链接。

    part1_type

    part1的类型:

    • 5:synonym
    • 7:procedure(top level)
    • 8:function(top level)

    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
    );
    
    表11 DBE_UTILITY.NAME_TOKENIZE接口说明

    参数名称

    描述

    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
    );
    
    表12 DBE_UTILITY.TABLE_TO_COMMA接口说明

    参数名称

    描述

    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
    );
    
    表13 DBE_UTILITY.GET_SQL_HASH_FUNC接口说明

    参数名称

    描述

    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;

我们使用cookie来确保您的高速浏览体验。继续浏览本站,即表示您同意我们使用cookie。 详情

文档反馈

文档反馈

意见反馈

0/500

标记内容

同时提交标记内容