返回首页

gbase数据、南大通用产品文档:GBase8sGOTO语句和异常处理

更新日期:2024年09月11日

GOTO语句可以从异常处理程序跳转到父块。例如:
CREATE TABLE t2(c1 VARCHAR(200));
CREATE OR REPLACE PROCEDURE sp1(X INT) IS
begin
<>
DECLARE
-- Raises an error:
i int := 10;
BEGIN
i := 10 / x;
INSERT INTO t2 VALUES('now x is not 0');

GBase 8s PL/SQL手册
南大通用数据技术股份有限公司
- 131 -


EXCEPTION
WHEN zero_divide THEN
INSERT INTO t2 VALUES('in sub-block, zero_divide');
x := 10;
GOTO label1;
END;
end;

CALL sp1(0);
SELECT * FROM t2;

GBase 8s PL/SQL手册
南大通用数据技术股份有限公司
- 132 -


Java 类型类介绍

FORALL 批量查询语句
语法图
说明:- 变量index 会自动定义为integer 类型并且只在此循环里存在。index 的
取值介于low_bound 和upper_bound 之间。- 如果声明了SAVE EXCEPTIONS,则会将循
环体DML 执行过程中每次遇到的异常保存在SQL&BULK_EXCEPTIONS 中,并在执行结
束后统一抛出一个异常,循环过程中没有异常的执行的结果在当前子事务内不会回滚。
示例
CREATE TABLE hdfs_t1 (
title NUMBER(6),
did VARCHAR2(20),
data_period VARCHAR2(25),
kind VARCHAR2(25),
interval VARCHAR2(20),
time DATE,
isModified VARCHAR2(10)
);

GBase 8c V5 开发者手册
南大通用数据技术股份有限公司
652
INSERT INTO hdfs_t1 VALUES( 8, 'Donald', 'OConnell', 'DOCONNEL', '650.507.9833',
to_date('21-06-1999', 'dd-mm-yyyy'), 'SH_CLERK' );
CREATE OR REPLACE PROCEDURE proc_forall()
AS
BEGIN
FORALL i IN 100..120
update hdfs_t1 set title = title + 100*i;
END;
/
--调用函数
CALL proc_forall();
--查询存储过程调用结果
SELECT * FROM hdfs_t1 WHERE title BETWEEN 100 AND 120;
--删除存储过程和表
DROP PROCEDURE proc_forall;
DROP TABLE hdfs_t1;