示例10 创建存储过程

/*============================================================
                       示例1 创建存储过程,完成添加雇员。
  ============================================================*/
--方法一:简单添加
create or replace procedure add_employee(
    eno number,  --输入参数,雇员编号
    name varchar2,--输入参数,雇员名称
    salary number,--输入参数,雇员薪水
    job VARCHAR2 DEFAULT 'CLERK',--输入参数,雇员工种默认'CLERK'
    dno number --输入参数,雇员部门编号
)
IS
begin
       insert into emp (empno,ename,sal,job,deptno)values (eno,name,salary,job,dno);
end;


--方法二:增加异常处理功能
  --如果雇员表中deptno列允许为空,则修改成不允许为空。如果该列已经不允许为空,则不需运行以下语句。
  --alter table emp modify deptno not null;

create or replace procedure add_employee(
    eno number,  --输入参数,雇员编号
    name varchar2,--输入参数,雇员名称
    salary number,--输入参数,雇员薪水
    job VARCHAR2 DEFAULT 'CLERK',--输入参数,雇员工种默认'CLERK'
    dno number --输入参数,雇员部门编号
)
IS
    emp_null_error EXCEPTION;  --声明异常变量
    PRAGMA EXCEPTION_INIT(emp_null_error, -1400);--非预定义异常,前提:deptno列非空。插入空值会报错
    emp_no_deptno EXCEPTION;  --声明异常变量
    PRAGMA EXCEPTION_INIT(emp_no_deptno, -2291);--非预定义异常,前提:deptno列建立外键约束,插入部门编号不在部门表中会报错
begin
       insert into emp (empno,ename,sal,job,deptno)values (eno,name,salary,job,dno);
exception
    when DUP_VAL_oN_INDEX then
        RAISE_APPLICATION_ERROR(-20000,'该雇员已存在');
    when emp_null_error then
        RAISE_APPLICATION_ERROR(-20001,'部门编号不能为空');        
    when emp_no_deptno then
        RAISE_APPLICATION_ERROR(-20002,'不存在该部门编号');                      
end;

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值