返回首页

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

更新日期:2024年09月11日

ON EXCEPTION 语句提供捕获任何错误的机制。
要捕获错误,请将一组语句包含在以 BEGIN 与 END 标记的语句块中,并在该语句块的
开头添加 ON EXCEPTION IN 语句。如果在跟在 ON EXCEPTION 语句之后的块中发生
错误,则您可采取恢复措施。
下图展示语句块内的 ON EXCEPTION 语句。
图: 捕获错误。
BEGIN
DEFINE c INT;
ON EXCEPTION IN

GBase 8s SQL 指南:教程
南大通用数据技术股份有限公司
- 332 -
(
-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 关键字,则执
行完全地退出当前的块。

使用全文检索的时候,在正文中将检索的内容高亮,便于用户查看。该函数随UP
系统安装到server/lib/gbase/plugin 目录下。 系统安装完成后,即可使用该功能,
无需额外的任何操作。
提供如下函数,对输入参数content 中出现的search_content 进行标记。
fulltext_mark(content, search_content, begin_mark, end_mark,min_search_len,
return_length,charsetinfo)

GBase UP 产品手册 5 数据库管理指南
文档版本04(2021-04-21) 南大通用数据技术股份有限公司 953
参数列表
参数名称
类型
必填
说明
Content
String

需要检索的文本内容,没有长度限制
search_content
String

检索词,没有长度限制
begin_mark
String

在高亮词前面增加该标记,例如'',没有任何限

end_mark
String

在高亮词后面增加该标记,
例如'
',
没有任何限

min_search_len
Int

被高亮词的最小长度(单位是字符),小于此长度的词
不被标记成高亮词,<=0 的时候 高亮的词是系统可
以匹配到的最长字串,该参数只和 search_content
和内部计算的LCS 的长度相关,
和其他参数都无关。
当该参数 <=0 的时候,内部使用LCS 的长度,当该
参数 > search_content 的长度时,则使用
search_content 的长度。

return_length
Int

返回字符串中原文的最大长度,单位是字符,(不包
括高亮词前后增加的字符串)

该参数是指返回的被
高亮的正文的长度,同 search_content、
begin_mark、
end_mark、
min_search_ln 没有任何
关系,只和 Content 的长度有关系,当该参数 >=
Content 的长度,则返回完整的Content,如果该参
数 <
Content 的长度,则先截断到return_length,
再对截断的文本进行高亮,然后返回
charsetinfo
String

传入数据的码制,支持UTF-8 和GBK,默认是UTF-8

注:以上的所有参数,在sql 中可以是值,可以是列,也可以是表达式、函数等,只需要满
足Sql 规范即可。
返回值
返回对content 中的出现的search_word 的前后增加begin_mark 和end_mark 后的文
本。
如:select fulltext_mark('abaab','ab','<','>',1,100);由于min_search_len=1,即超过1 个字
符的此都要求反显, ab 被反显,单独的a 和单独的b 也会被反显,结果是:

特殊说明

GBase UP 产品手册 5 数据库管理指南
文档版本04(2021-04-21) 南大通用数据技术股份有限公司 954

支持英文,并且忽略大小写
原文: ”IBM 是一家跨国公司,ibm 的产品很好”
搜索词: “ibm”
反显结果: ”IBM 是一家跨国公司,ibm 的产品很好”

尽量匹配最长的字串
在匹配的过程中,尽量匹配最长的搜索词
原文: “中国北京是个大城市,北京机场很繁忙”
搜索词: “北京机场”
反显结果:”中国北京是个大城市,北京机场很繁忙”
如果最长的字串不能匹配,则减少部分搜索词,进行匹配
原文: “中国北京是个大城市,北京机场很繁忙”
搜索词: “北京机场航站楼”
反显结果:”中国北京是个大城市,北京机场很繁忙”
“北京机场航站楼”
全词不能匹配到,

“北京机场”
可以匹配到,
则反显 “北
京机场”

当要反显的字串小于 min_search_len 时 不予标记
在匹配的过程中,尽量匹配最长的搜索词,如果最长的搜索词不能匹配,则减
少部分搜索词再进行匹配,如果搜索词小于min_search_len 则放弃标引
原文: “中国北京是个大城市,北京机场很繁忙”
搜索词: “北京天安门”
反显结果:”中国北京是个大城市,北京机场很繁忙”
min_search_len:3
要匹配的 “北京天安门”,能匹配的最长的串是“北京”,原文中也有“北
京”,但是 “北京”的长度已经小于 min_search_len 的3,故不能反显

返回的段落长度最大值return_length
返回的段落长度,如果小于return_length,则全部返回,如果返回的段落长度
大于return_length 时,则先截短到这个长度,再返回

支持utf-8 和GBK 编码

GBaseException 属性