PL/SQL--存储过程与函数

PL/SQL–存储过程与函数

存储过程

语法结构

CREATE [OR REPLACE] PROCEDURE procedure_name
[(parameter1 [mode1] datatype1,
parameter2 [mode2] datatype2,
. . .)]
IS|AS
PL/SQL Block;
create or replace procedure GET_EMP_BY_ID
  (emp_id in number, 
   full_name out varchar2,--参数不能给长度
   salary out number) 
is   
begin
  select first_name || '.' || last_name, salary
    into full_name, salary
    from employees
    where employee_id = emp_id;
exception
  when no_data_found then
    dbms_output.put_line('没有找到数据');
end GET_EMP_BY_ID;

存储过程的调用

--存储过程的调用--
declare 
  v_name varchar2(20);
  v_salary number;
begin 
--调用方式一:必须参数对应
--get_emp_by_id(100, v_name, v_salary);
--调用方式二:可以互换参数位置
  get_emp_by_id(full_name => v_name, salary => v_salary, emp_id => 40);
--调用方式三:直接写过程名称,如get_emp_by_id不要括号;会使用默认值  
  dbms_output.put_line('姓名:' || v_name );
  dbms_output.put_line('薪水:' || v_salary );
end;

含有in out参数的存储过程

create or replace procedure ADD_SELF
  (v_value in out number) 
is
begin
  v_value := v_value + 1;
end ADD_SELF;

含有in out参数的存储过程

declare 
  v_value number := 10;
begin 
  add_self(v_value => v_value);
  dbms_output.put_line('自增结果:' || v_value);
end;

函数

create or replace function FUN_ADD_SELF 
  (v_value number default 0)
return number    --返回类型 
is
begin
  return v_value + 1;--返回返回值
end FUN_ADD_SELF;

调用方式与存储过程一样

存储过程与函数的区别
1. 返回值的区别,函数有1个返回值,而存储过程是通过参数返回的,可以有多个或者没有
2. 调用的区别,函数可以在查询语句中直接调用,而存储过程必须单独调用.
3. 函数一般情况下是用来计算并返回一个计算结果而存储过程一般是用来完成特定的数据操作(比如修改、插入数据库表或执行某些DDL语句等等)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值