04 Oracle存储过程

1.创建表:

create table t_dept(
    deptno integer key primary,
    dname varchar2(10),
    loc varchar2(50)
);

2.插入数据:

insert into t_dept(deptno,dname,loc) values(10,'研发部','北京');
insert into t_dept(deptno,dname,loc) values(20,'开发部','天津');
insert into t_dept(deptno,dname,loc) values(30,'财务部','上海');

3.用储存过程插入数据

--创建存储过程,并设置参数d_name,loc默认为"NEW YORK
create or replace procedure new_dept(d_name in varchar2,loc in varchar2 :='深圳')
is
    dept_no interger;    --定义变量
begin
    --先得到部门的最大编号
    select max(deptno) into dept_no from t_dept; --把最大编号赋值给变量dept_no
    --在最大部门编号的基础上加一个值10
    dept_no :=dept_no + 10;
    --添加数据
    insert into t_dept values(dept_no,d_name,loc);
    exception
        when others then
            dbms_output.put_line('添加部门失败');
end;

4.调用存储过程

--因为存储过程要传递参数,所以需要先定义参数
declare
    dname varchar2(20) :='行政部';
    loc varchar2(30) :='&请输入地址';--运行后自己手动输入
begin
    NEW_DEPT(dname,loc);
end;

当然,第四步的时候,我们如果不设置loc,默认地址是‘深圳’。或者直接在定义参数的时候输入地址,无需运行后自己手动输入;&表示运行后手动输入。

5.运行结果:

select * from t_dept;
/*添加了一个id为:40 行政部 长沙 
DEPTNO	DNAME	LOC
10	研发部	北京
20	开发部	天津
30	财务部	上海
40	行政部	长沙
*/

6.删除存储过程:

drop procedure new_dept;

补充:

is as 在存储过程中没有区别,视图中只用as不能用is;游标中只能用is,不能用as。

在select into 的时候有两个异常需要关注 too_many_rows 、no_date_found。

declare
    dept_no integer;
begin
    select deptno into dept_no from t_dept;--deptno有四个值
    dbms_output.put_line(dept_no);
exception
    when too_many_rows then
        dbms_output.put_line("取出的编号多于一个!");
end;
--no_data_found 没有取出一个数值

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值