Oracle 中的函数

01-存储函数

1-1 什么是存储函数

  • 存储函数 自定义函数(我们自己写的函数)

  • 存储函数 为了给我们一个结果的

  • 可以通过 select 函数名 直接使用

1-2 存储函数的特点

  • 存储函数必须有返回值

  • select 函数名

1-3 语法

CREATE [ OR REPLACE ] FUNCTION 函数名称

(参数名称 参数类型, 参数名称 参数类型, ... )

RETURN 结果变量数据类型

IS

变量声明部分;

BEGIN

逻辑部分;

RETURN 结果变量;

[EXCEPTION

异常处理部分]

END;

例如:

复制代码
-- 创建函数 fn_num_ou()
-- 具有参数 num ==> 整数类型
-- 返回值 ret ==> 字符串类型
-- 功能: 如果参数num为偶数 返回值ret结果为 是
--      如果参数num为偶数 返回值ret结果为 不是
create or replace function fn_num_ou(num number)
return varchar2
is
 ret varchar2(30);
begin
    if mod(num,2)=0 then
        ret := '是';
        return ret;
    else
        ret := '不是';
        return ret;
    end if;
end;

select fn_num_ou('123') from dual;

CREATE FUNCTION

  • 创建存储函数

函数名称 (参数名称 参数类型, 参数名称 参数类型, ... )

  • 写参数的时候 参数名 参数类型(!!!只写类型 不写大小)

RETURN 结果变量数据类型

  • 写大小

is

  • plsql代码即可

02-存储过程

2-1 什么是存储过程

  • 存储一些 事物性操作 (把一个过程存储下来)

  • 不需要返回值任何结果的(没有返回值)

    • 可以返回值(传出参数)

    • 返回多个返回值

  • 参数比较多

    • 传出参数 out

    • 传入参数 in (什么也不加 默认就是 in)

    • 传出传入参数

2-2 存储过程 和 存储函数的区别

1、存储函数中有返回值,且必须返回;而存储过程没有返回值,可以通过传出参数返回多个值。

2、存储函数可以在select 语句中直接使用,而存储过程不能。过程多数是在plsql代码中直接使用的。在plsql代码外部使用 call 存储过程名.

3、存储函数一般都是封装一个查询结果,而存储过程一般都封装一段事务代码。

2-3 语法

CREATE [ OR REPLACE ] PROCEDURE 存储过程名称

(参数名 类型, 参数名 类型, 参数名 类型)

IS|AS

变量声明部分;

BEGIN

逻辑部分

[EXCEPTION

异常处理部分]

END;

例子:

复制代码
-- todo 2.1 准备工作(t_owners有主键)  创建序列 seq_owners 起始值100 生成主键值
create sequence seq_owners start with 100 increment by 1;
-- todo 2.2 创建传入参数的存储过程 pro_owners_add 添加业主信息 create procedure
--  注意!!!:参数只能写类型不能写大小
create or replace procedure pro_owners_add(
--  参数: v_name in, v_addressid in, v_housenumber in, v_watermeter in, v_ownertypeid in
    v_name varchar2,
    v_addressid number,
    v_housenumber varchar2,
    v_watermeter varchar2,
    -- ADDDATE 为插入时间 不需要用户设定 直接指定为 插入数据时间即可
    v_ownertypeid number
)
is
begin
-- todo 2.3 向t_owners插入数据
    insert into T_OWNERS
    values (seq_owners.nextval,
            v_name,
            v_addressid,
            v_housenumber,
            v_watermeter, sysdate, v_ownertypeid);
-- todo 2.4 提交数据
    commit;
end;
-- todo 2.5 调用存储过程 添加业主信息 call 存储过程(... ...);
call pro_owners_add('盘丝洞01',66,'66','66',66);

CREATE PROCEDURE

创建存储过程

存储过程名称(参数名 类型, 参数名 类型, 参数名 类型

    • 声明类型不加大小!!!
相关推荐
C嘎嘎嵌入式开发6 分钟前
什么是僵尸进程
服务器·数据库·c++
Yeats_Liao2 小时前
Navicat 导出表结构后运行查询失败ERROR 1064 (42000): You have an error in your SQL syntax;
数据库·sql
明月看潮生3 小时前
青少年编程与数学 02-007 PostgreSQL数据库应用 15课题、备份与还原
数据库·青少年编程·postgresql·编程与数学
明月看潮生3 小时前
青少年编程与数学 02-007 PostgreSQL数据库应用 14课题、触发器的编写
数据库·青少年编程·postgresql·编程与数学
加酶洗衣粉8 小时前
MongoDB部署模式
数据库·mongodb
Suyuoa8 小时前
mongoDB常见指令
数据库·mongodb
添砖,加瓦8 小时前
MongoDB详细讲解
数据库·mongodb
Zda天天爱打卡8 小时前
【趣学SQL】第二章:高级查询技巧 2.2 子查询的高级用法——SQL世界的“俄罗斯套娃“艺术
数据库·sql
我的运维人生8 小时前
MongoDB深度解析与实践案例
数据库·mongodb·运维开发·技术共享
步、步、为营8 小时前
解锁.NET配置魔法:打造强大的配置体系结构
数据库·oracle·.net