oracle存储过程

存储过程小知识:

1、输出并换行语句: dbms_output.put_line

2、字符串用单引号

3、字符串的拼接通过“||”

4、其他异常用others表示

5、在SQL窗口调用存储过程:begin...存储过程名()...end;在命令窗口可以直接exec 存储过程名()。


//创建无参存储过程

create or replace procedure findAllPerson
as   
      v_name person.name%type;
      v_salary person.salary%type;
      cursor cur_person is select * from person;    
begin 
      for cur in cur_person loop
          v_name:=cur.name;
          v_salary:=cur.salary;
          dbms_output.put_line('姓名:'||v_name||'------薪资:'||v_salary);
      end loop;
end;
//执行存储过程
begin
  findAllPerson;
end;


//创建删除的存储过程

create or replace procedure delete_procedure(v_id in person.id%type)
is        
       no_result exception;
begin 
      delete from person where id=v_id;
      if sql%notfound then raise no_result;
      end if;
exception 
     when no_result then dbms_output.put_line('没有找到要删除的数据');
     when others then dbms_output.put_line(sqlcode||'-----'||sqlerrm);
end;
//执行删除的存储过程
begin 
     delete_procedure(8);
     commit;
end;
 
//创建查询的存储过程
create or replace procedure query_procedure(v_id in person.id%type,v_name out person.name%type,v_salary out person.salary%type)
is        
begin 
      select name,salary into v_name,v_salary from person where id=v_id;
exception 
    when no_data_found then 
       dbms_output.put_line('没有找到要查询的数据');
end;
//执行查询的存储过程
declare 
     v_name person.name%type;
     v_salary person.salary%type;
begin 
     query_procedure(3,v_name,v_salary);
     dbms_output.put_line('姓名:'||v_name||',薪资:'||v_salary);
end;


存储过程与存储函数的区别

  相同点:1.创建语法结构相似,都可以携带多个传入参数和传出参数。

          2.都是一次编译,多次执行。

  不同点:1.存储过程定义关键字用procedure,函数定义用function。

      2.存储过程中不能用return返回值,但函数中可以,而且函数中必须有return子句。

      3.执行方式略有不同,存储过程的执行方式有两种(1.使用execute2.使用begin和end),函数除了存储过程的两种方式外,还可以当做表达式使用,例如放在select中(select f1() form dual;)。

总结:如果只有一个返回值,用存储函数,否则,一般用存储过程。



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值