返回首页

gbase数据、南大通用产品文档:GBase8s错误捕获与恢复

更新日期:2024年09月11日

ON EXCEPTION 语句提供捕获任何错误的机制。

GBase 8s SQL 指南:教程
南大通用数据技术股份有限公司 - 326 -

要捕获错误,请将一组语句包含在以 BEGIN 与 END 标记的语句块中,并在该语句块的
开头添加 ON EXCEPTION IN 语句。如果在跟在 ON EXCEPTION 语句之后的块中发生
错误,则您可采取恢复措施。
下图展示语句块内的 ON EXCEPTION 语句。
图: 捕获错误。
BEGIN
DEFINE c INT;
ON EXCEPTION IN
(
-206, -- 表不存在
-217 -- 列不存在
) SET err_num

IF err_num = -206 THEN
CREATE TABLE t (c INT);
INSERT INTO t VALUES (10);
-- 在插入语句之后继续
ELSE
ALTER TABLE t ADD(d INT);
LET c = (SELECT d FROM t);
-- 在选择语句之后继续
END IF
END EXCEPTION WITH RESUME

INSERT INTO t VALUES (10); -- 如果 t 不存在,则失败

LET c = (SELECT d FROM t); -- 如果 d 不存在,则失败
END
当发生错误时,SPL 解释器搜索捕获该错误的最内层 ON EXCEPTION 声明。捕获错误之
后的第一个操作是重置该错误。当完成错误操作代码的执行时,且如果引起错误的 ON
EXCEPTION 声明包括了 WITH RESUME 关键字,则以跟在产生了该错误的语句之后的
语句自动地恢复执行。如果 ON EXCEPTION 声明未包括 WITH RESUME 关键字,则执
行完全地退出当前的块。

查看存储过程/函数的状态........................................1352

-P
集群使用的端口号,默认5258,可选参数
-D
可选参数-D 的参数值,指定登录时默认的数据库(数据库必
须存在),可选参数
--nice_time_forma
指定用户操作耗时的最小精度,使用此参数,精确到毫秒,
不使用,精确到秒。可选参数。
-c
使用此参数,用于使用hint 优化方式。可选参数;
--force,-f
批量执行SQL 文件时,
如果中间有SQL 执行报错,
强制执行
后续SQL,可选参数;
--verbose,-v
冗长模式。产生更多的输出。可以多次使用该选项以产生更
多的输出。(例如,-v -v -v 甚至可以在批处理模式产生表输
出格式)。
--version,-V
显示版本信息并退出。
--vertical,-E
垂直输出查询输出的行。没有该选项,可以用\G 结尾来指定
单个语句的垂直输出。
--execute=statement,
-e statement
执行语句并退出,可以是多个语句,多个SQL 以“;”隔开,
可选参数;

--silent,-s
沉默模式。产生少的输出。可以多次使用该选项以产生更少
的输出。
--skip-column-names,
-N
在结果中不写列名。
--skip-line-numbers,
-
L
在错误信息中不写行号。当你想要比较包括错误消息的结果
文件时有用。
--html,-H
产生HTML 输出。

<、<<、 EOF 接收输入的方式,可用于批量执行SQL 文件,
可选参数。

GBase UP 产品手册 3 软件安装

文档版本04(2021-04-21) 南大通用数据技术股份有限公司 109
示例
示例1
[gbase@gcluster1 etc]$ gccli -ugbase -p

GBase client 9.5.2.20.117651. Copyright (c) 2004-2020, GBase. All
Rights Reserved.

gbase> use vc myvc;
Query OK, 0 rows affected (Elapsed: 00:00:00.01)
示例2
$
gccli
-ugbase
-pgbase20110531
-Dgbase -vvv
-e"select
count(*)
from
user;select user from user";
--------------
select count(*) from user
--------------

+----------+
| count(*) |
+----------+
| 2 |
+----------+
1 row in set (Elapsed: 00:00:00.00)

--------------
select user from user
--------------

+------------------+
| user |
+------------------+
| gbase |
| root |
+------------------+
2 rows in set (Elapsed: 00:00:00.00)

GBase UP 产品手册 3 软件安装

文档版本04(2021-04-21) 南大通用数据技术股份有限公司 110

Bye
示例3
$ cat 1.sql
select count(*) from user;
select user from user;
$ gccli -ugbase -pgbase20110531 -Dgbase -h192.168.1.1,192.168.1.2
-vvv <1.sql
--------------
select count(*) from user
--------------

+----------+
| count(*) |
+----------+
| 2 |
+----------+
1 row in set (Elapsed: 00:00:00.01)

--------------
select user from user
--------------

+------------------+
| user |
+------------------+
| gbase |
| root |
+------------------+
2 rows in set (Elapsed: 00:00:00.00)

Bye



GBase UP 产品手册 4 管理员指南

文档版本04(2021-04-21) 南大通用数据技术股份有限公司 111
4 管理员指南
本章介绍如何管理GBase UP 平台。供系统管理员进行集群日常健康检查、集群管
理、安全管理、审计管理等操作。