Oracle:PL*Plus编程(三)

异常

一.常用异常

异常名称错误代码描述
ACCESS_INTO_NULLORA-06530试图对未初始化对象属性赋值。
CASE_NOT_FOUNTORA-06592未在case语句中找到匹配的when子句,也没有默认的else子句
INVALID_CURSORORA-01001程序试图进行非法游标操作
INVALID_NUMBERORA-01722试图将字符串转换成数字时失败,因为字符串并不代表有效的数字
LOGIN_DENIEDORA-01017试图用非法的用户名或密码连接数据库
TOO_MANAY_ROWSORA-01422select into 语句返回多行
DUP_VAL_ON_INDEXORA-00001试图向唯一索引约束的列中插入重复值。

例子:

begin 
    dbms_output.put_line(1/0);
exception
     when zero_divide then 
end;

结果:

Division by zero

OTHERS:可以处理所有异常
例如:

begin 
    dbms_output.put_line(1/0);
exception 
    when others then dbms_output.put_line('Division by zero');
end;

结果:

Division by zero

过程

二.过程

1.创建过程

语法:

CREATE [OR REPLACE] PROCEDURE procedure_name
{[parameter_name [IN | OUT | IN OUT] type [, ...]}
{IS | AS}
BEGIN
procedure_body
END procedure_name;

例如:

create procedure update_test_type(
    test_id in test.id%TYPE,
    test_type in varchar(10) 
) as
    v_count integer;
begin
    select count(*)
    into v_count
    from test
    where id = test_id;
    if v_count = 1 then
        update test
        set type = test_type
        where id = test_id;
        commit;
    end if;
exception
    when others then
        rollback;
end update_test_type;
2.调用过程
call update_test_type(1, '09');
3.获取有关过程的信息
select object_name, aggregate, parallel
from user_procedures
where object_name='update_test_type';
4.删除过程
drop procedure update_test_type;
5.查看错误
show errors
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值