要捕获错误,请将一组语句包含在以 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 关键字,则执 行完全地退出当前的块。
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 第二个版本允许您支持本地化的错误消息。