返回首页

gbase数据、南大通用产品文档:GBase8sALTER ROUTINE 语句

更新日期:2024年09月11日

使用 ALTER ROUTINE 语句更改先前定义的用户定义的例程(UDR)的例程修
饰符或路径名。该语句是 SQL ANSI/ISO 标准的扩展。
语法

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 105

元素
描述
限制
语法
routine
要修改的用户
定义的例程
必须在数据库中注册。如果该
名称没有唯一地标识例程,您
必须为 parameter_type 输入
一个或多个相应值
标识符
parameter_type 参数的数据类

必须与 routine 定义中的数
据类型相同(并以相同的顺序
指定)
数据类型
用法
ALTER ROUTINE 语句使您可以修改先前定义的 UDR 以调整其性能,方法是修
改该 UDR 如何执行的特征。您也可以添加或替换相关的 UDR ,它们为优化程
序(可以提高性能)提供了其它选择。
此语句在您不知道 UDR 是用户定义的函数还是用户定义的过程时很有用。当您
使用词语时,数据库服务器会更改相应的用户定义的过程或用户定义的函数。
所有的修改在该 UDR 下一次调用时生效。
只有 UDR 所有者或 DBA 可以使用 ALTER ROUTINE 语句。
限制
如果该名称没有唯一地标识 UDR ,您必须为 parameter_type 输入一个或多个相
应值。

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 106
当您使用词语时,UDR 的类型必须是确定的。您指定的 UDR 必须指定用户定义的
函数或用户定义的过程。如果存在以下任何一种情况,则数据库服务器会返回一
条错误:

您指定的名称(和参数)同时适用于用户定义的过程和用户定义的函数。

您指定的特定名称同时适用于用户定义的函数和用户定义的过程。
引用修改的关键字
使用这些关键字在 UDR 中引入您想要修改的项:
关键字
作用
ADD
向 UDR 添加一个例程修饰符
DROP
从 UDR 删除例程修饰符
MODIFY
更改例程修饰符的属性
MODIFY EXTERNAL NAME (for
external routines only)
替换可执行文件的文件规范。当
IFX_EXTEND_ROLE 配置参数为 ON 时,此选项
只对被 DBSA 授予 EXTENT 角色的用户有效。
当 IFX_EXTEND_ROLE 配置参数为 OFF 时, UDR
所有者或 DBA 可以使用此选项。
WITH
引入所有修改
如果例程修饰符为 BOOLEAN 值,MODIFY 将该值设置为 T (相当于使用关
键字 ADD 添加该例程修饰符)。
例如:下面这两个语句都更改了 func1 UDR ,这样它可以在可并行数据查询的环
境中执行:
ALTER ROUTINE func1 WITH (MODIFY PARALLELIZABLE);
ALTER ROUTINE func1 WITH (ADD PARALLELIZABLE);
更改例程修饰符示例
假设您有一个外部函数 func1 ,它设置为处理 NULL 值,并且每次调用的成本
设置为 40 。以下 ALTER ROUTINE 语句通过删除处理 NULL 值的能力而调整
该函数的设置,通过将每次调用的成本更改为 20 而调整 func1 ,并指示该函数
可以并行执行:

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 107
ALTER ROUTINE func1(CHAR, INT, BOOLEAN)
WITH (
DROP HANDLESNULLS,
MODIFY PERCALL_COST = 20,
ADD PARALLELIZABLE
);
因为名称 func1 对数据库来说不是唯一的,所以指定了数据类型参数,这样例程
特征符就是唯一的。如果此函数在创建时指定了一个特定名称(例如,
raise_sal),您可以使用下面的第一行标识该函数:
ALTER SPECIFIC ROUTINE raise_sal;

函数说明
SUBTIME()将expr2 从expr 中减去并返回结果。
expr 是一个time 或者datetime 表达式,expr2 是一个时间表达式。
示例
示例1:返回“2020-12-31 23:59:59.999999”减去“1 1:1:1.000002”的值。
gbase> SELECT SUBTIME('2020-12-31 23:59:59.999999','1 1:1:1.000002')
FROM dual;
+--------------------------------------------------------+
| SUBTIME('2020-12-31 23:59:59.999999','1 1:1:1.000002') |
+--------------------------------------------------------+
| 2020-12-30 22:58:58.999997
|

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-04-10)
南大通用数据技术股份有限公司
811
+--------------------------------------------------------+
1 row in set

GLOBAL_REDO_STATUS 视图显示GBase 8c 实例的日志回放情况。
名称
类型
描述
node_name
text
数据库进程名称。
redo_start_ptr
bigint
当前实例日志回放的起始点。
redo_start_time
bigint
当前实例日志回放的起始UTC 时间。
redo_done_time
bigint
当前实例日志回放的结束UTC 时间。
curr_time
bigint
当前实例的当前UTC 时间。
min_recovery_poi
nt
bigint
当前实例日志的最小一致性点位置。
read_ptr
bigint
当前实例日志的读取位置。
last_replayed_read
_ptr
bigint
当前实例的日志回放位置。
recovery_done_ptr
bigint
当前实例启动完成时的回放位置。
read_xlog_io_cou
nter
bigint
当前实例读取回放日志的io 次数计数。
read_xlog_io_total
_dur
bigint
当前实例读取回放日志的io 总时延。

GBase 8c V5 开发者手册
南大通用数据技术股份有限公司
1064
名称
类型
描述
read_data_io_cou
nter
bigint
当前实例回放过程中读取数据页面的io 次数计数。
read_data_io_total
_dur
bigint
当前实例回放过程中读取数据页面的io 总时延。
write_data_io_cou
nter
bigint
当前实例回放过程中写数据页面的io 次数计数。
write_data_io_tota
l_dur
bigint
当前实例回放过程中写数据页面的io 总时延。
process_pending_
counter
bigint
当前实例回放过程中日志分发线程的同步次数计
数。
process_pending_t
otal_dur
bigint
当前实例回放过程中日志分发线程的同步总时延。
apply_counter
bigint
当前实例回放过程中回放线程的同步次数计数。
apply_total_dur
bigint
当前实例回放过程中回放线程的同步总时延。
speed
bigint
当前实例日志回放速率。
local_max_ptr
bigint
当前实例启动成功后本地收到的回放日志的最大
值。
primary_flush_ptr
bigint
主机落盘日志的位置。
worker_info
text
当前实例回放线程信息,
若没有开并行回放则该值
为空。