返回首页

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 关键字,则执
行完全地退出当前的块。

com.gbasedbt.lang.IntervalDF 类允许您操纵间隔。
IntervalDF 构造函数
定义的缺省构造函数如下:
public IntervalDF() throws SQLException
如果抛出异常,请使用缺省构造函数的第二个版本,来显示本地化的错误消息:
public IntervalDF(Connection conn) throws SQLException
请使用下列构造函数,来创建来自特定的输入值的间隔:

两个时间戳 t1 和 t2,返回等于 t1 - t2 的 IntervalDF 值:
public IntervalDF(Timestamp t1, Timestamp t2)
throws SQLException

public IntervalDF(Timestamp t1, Timestamp t2, Connection conn)
throws SQLException
第二个版本允许您支持本地化的错误消息。

秒和纳秒数(将大型秒值转换为分、小时或天):
public IntervalDF(long seconds, long nanos)
throws SQLException
public IntervalDF(long seconds, long nanos, Connection conn)
throws SQLException
第二个版本允许您支持本地化的错误消息。

秒数、纳秒数和限定符:
public IntervalDF(long seconds, long nanos, short qualifier)
throws SQLException


GBase 8s JDBC Driver 程序员指南
南大通用数据技术股份有限公司
- 115 -

public IntervalDF(long seconds, long nanos, short qualifier, Connection conn)
throws SQLException
要指定限定符,可使用 Interval 方法 中描述的 getQualifier() 方法。第二个版本允许
您支持本地化的错误消息。

字符串:
public IntervalDF(String string)
throws SQLException
public IntervalDF(String string, Connection conn)
throws SQLException
第二个版本允许您支持本地化的错误消息。
当使用这些构造函数时,将缺省的限定符设置为下列值:
领头的字段精度:2 开始代码:TU_DAY 结束代码:TU_F5
要获取关于字符串 INTERVAL 格式的信息,
请参阅
《GBase 8s SQL 指南:
语法》


字符串和限定符:
public IntervalDF(String string, short qualifier)
throws SQLException

public IntervalDF(String string, short qualifier, Connection conn)
throws SQLException
要指定限定符,可使用 Interval 方法 中描述的 getQualifier() 方法。第二个版本允许
您支持本地化的错误消息。

字符串和限定符信息:
public IntervalDF(String string, int length, byte startcode, byte endcode)
throws SQLException

public IntervalDF(String string, int length, byte startcode, byte endcode,
Connection conn) throws SQLException
第二个版本允许您支持本地化的错误消息。

IntervalDF 方法
下列方法允许您操纵间隔。(您还可使用 Interval 方法,如前描述。)您可执行的任务和可
使用的方法如下:

比较两个间隔:
boolean equals(Object other)

GBase 8s JDBC Driver 程序员指南
南大通用数据技术股份有限公司
- 116 -

boolean greaterThan(IntervalDF other)
boolean lessThan(IntervalDF other)

从其设置间隔的值:

字符串:
void fromString(String other)
void set(String string)

秒和纳秒值(将大型秒值转换为分钟、小时或天):
void set(long seconds, long nanos)

两个时间戳:
void set(Timestamp t1, Timestamp t2)

从长度、开始代码和结束代码设置限定符:
void setQualifier(int length, byte startcode, byte endcode)

取得间隔中的纳秒数:
long getNanoSeconds()

取得间隔中的秒数:
long getSeconds()

以格式 ddddd hh:mm:ss.nano 创建间隔的字符串表示:
String toString()
字段显示依赖于限定符。以空格替代开头的零。

gbase_use_result
.............................
49