Pl/sql+存储函数

目录

1.是什么

2.语法

3.例子

4.存储过程

5.存储函数和存储过程的区别

6.存储过程语法

7.例子


1.是什么
-- 自定义函数,我们自己写的函数,可以通过函数名直接使用,存储函数也是函数,为了返回一个结果,必须有返回值。
2.语法
create [or replace] function 函数名  -- 只写类型
(参数名 参数类型,参数名 参数类型...)  -- 只写类型,不写大小
return 结果变量数据类型  -- 只写类型,不写大小
is 
    变量声明部分;
begin
    逻辑部分;
    return 结果变量;
    [exception 异常处理部分]
end;
3.例子
create or replace function fn_getAddressByID
(addr_id number)  -- 只写类型,不写大小
return varchar2  -- 只写类型,不写大小
is 
    v_name varchar2(100); -- 这里要写大小
begin
    -- 根据参数,获取名字
    select name into v_name from T_ADDRESS where id = add_id; -- 获取第二行字段名
    return v_name;
end;
-- 使用存储函数
select fn_getAddressByID(12)from dual;

4.存储过程
-- 存储过程只是为了完成某个过程,没有返回值,但可以返回值。
-- 有传入(in),传出(out)参数,传出传入参数。
5.存储函数和存储过程的区别
-- 存储函数中有返回值,且必须返回;而存储过程没有返回值,可以通过传出参数返回多个值。
-- 存储函数可以在select 语句中直接使用,而存储过程不能。过程多数是在plsq!代码中直接使用的。在plsql代码外部使用 cal 存储过程名。
-- 存储函数一般都是封装一个查询结果,而存储过程一般都封装一段事务代码。
6.存储过程语法
create [or replace] procedure 存储过程名  -- 只写类型
(参数名 参数类型,参数名 参数类型...)  -- 只写类型,不写大小
return 结果变量数据类型  -- 只写类型,不写大小
is|as 
    变量声明部分;
begin
    逻辑部分;
    return 结果变量;
    [exception 异常处理部分]
end;
7.例子
-- 准备工作(t_owners有主键),创建序列 seq_owners 起始值100 生成主键值
create sequence seg_owners start with 100;
-- 创建传入参数过程
create or replace procedure aaa  -- 只写类型
(V_NAME varchar2,
V_ADDRESSID number,
V_HOUSENUMBER varchar2,
V_WATERMETER varchar2,
V_OWNERTYPEID number)  -- 只写类型,不写大小
is
begin
    -- 向t_owners插入数据
    insert into C##WATERUSER.T_OWNERS
    values (seg_owners.nextVaL, V_NAME, V_ADDRESSID, V_HOUSENUMBER, V_WATERMETER,SYSdate, V_OWNERTYPEID);
    -- 提交数据
commit;
end;

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值