常用SQL命令汇总(四)-存储过程

一、存储过程/函数的作用

存储过程和函数是在数据库中定义一些 SQL 语句的集合,然后直接调用这些存储过程和函数来执行已经定义好的 SQL 语句。存储过程和函数可以避免开发人员重复的编写相同的 SQL 语句。而且,存储过程和函数是在 MySQL
服务器中存储和执行的,可以减少客户端和服务器端的数据传输;

二、存储过程/函数的创建

1 创建存储过程

  1. 不带参数的存储过程
create or replace procedure p_hello is
--如果需要,在此处声明变量
begin
  dbms_output.put_line('hello world'); 
end p_hello;
-- 写完点击执行,这段语句会被编译并存储

打开一个sql执行窗口进行调用(is可以写成as),执行

begin
  p_hello; --调用
end;
  1. 带参数的存储过程
--查询并打印某个员工的姓名,薪水,要求调用时传入员工编号,控制台自动打印
create or replace procedure p_empInfo(i_empno IN emp.empno%TYPE) as
  --声明变量
  v_ename emp.ename%TYPE;
  v_sal   emp.sal%TYPE;
begin
  select ename, sal into v_ename, v_sal from emp where empno = i_empno;
  dbms_output.put_line('员工编号:' || i_empno || ',姓名:' || v_ename || ',薪水:' || v_sal);

end p_empInfo;

调用该存储过程(调用一次会执行一次)

begin
  p_empInfo(7839);
  p_empInfo(7902);
end;
  1. 带参数且有返回值的存储过程
--输入员工号查询某个员工(7839)信息,要求讲薪水作为返回值输出,给调用的程序使用
create or replace procedure p_empInfo2(i_empno IN emp.empno%TYPE, o_sal out emp.Sal%TYPE) as
begin
  select sal into o_sal from emp where empno = i_empno;
end p_empInfo2;

调用(如果用代码调用,薪水就是返回值)

declare 
  
  v_sal emp.sal%TYPE;
begin
  p_empInfo2(7839,v_sal);
  dbms_output.put_line(v_sal);
    
end;

三、存储过程/函数的区别

存储过程:

  • 作为 PL/SQL 语句执行;
  • 在规范中不包含 RETURN 子句;
  • 不返回任何值(只有输入/输出参数,结果集);
  • 可以包含 RETURN语句,但是与函数不同,它不能用于返回值。它用out输出参数。

存储函数:

  • 作为表达式的一部分调用;
  • 必须在规范中包含 RETURN 子句;
  • 必须返回单个值;
  • 必须包含至少一条 RETURN 语句。
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值