Oracle 中的函数

devtools/2024/9/25 10:36:11/

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
isret varchar2(30);
beginif mod(num,2)=0 thenret := '是';return ret;elseret := '不是';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 inv_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_OWNERSvalues (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

创建存储过程

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

    • 声明类型不加大小!!!


http://www.ppmy.cn/devtools/21972.html

相关文章

【ARM Cache 系列文章 11 -- ARM Cache 组织形式详细介绍】

请阅读【ARM Cache 系列文章专栏导读】 文章目录 ARM Cache组织形式直接映射(Direct Mapped)直接映射示例直接映射原理Cache颠簸(cache thrashing)原因ARM Cache组织形式 在ARM体系结构中,缓存(Cache)是一种关键的硬件机制,用于减少处理器访问内存所需的时间。缓存可以…

采用php vue2 开发的一套医院安全(不良)事件管理系统源码(可自动生成鱼骨图)

采用php vue2 开发的一套医院安全(不良)事件管理系统源码(可自动生成鱼骨图) 医院安全(不良)事件管理系统采用无责的、自愿的填报不良事件方式,有效地减轻医护人员的思想压力,以事件…

GO语言核心30讲 基础知识

原站地址:Go语言核心36讲_Golang_Go语言-极客时间 1. 两种声明变量方式的差异: 短变量声明 name : "abc" 只能在函数体内部使用。 var name "abc" 这方式才可以用在所有地方。 2. 类型推断有什么好处? 代码重构时更方…

Java23种设计模式-创建型模式之建造者模式

建造者模式(Builder Pattern),也被称为生成器模式,是一种创建型设计模式,主要用于解决复杂对象的构建问题。建造者模式的主要特点是: 1.分离构建与表示:将一个复杂对象的构建与它的表示分离&…

Java基础知识总结(77)

* 2、JMM模型 JMM(Java Memory Model):Java 内存模型,是 Java 虚拟机规范中所定义的一种内存模型,Java 内存模型是标准化的,屏蔽掉了底层不同计算机的区别。也就是说,JMM 是 JVM 中定义的一种并…

AI视频下载:零基础2小时学会开发 Chrome扩展程序

无论您是有抱负的Web开发人员、AI爱好者还是生产力黑客,本课程都提供了宝贵的见解和实践经验,帮助您利用AI和Chrome扩展的力量来简化Web自动化,改善各个行业和领域的用户体验,解锁AI驱动生产力的潜力! 此课程面向以下…

wpf 按钮禁用样式

在WPF中&#xff0c;要为按钮创建一个禁用样式&#xff0c;需要在资源字典中定义一个Style&#xff0c;该样式将应用于Button控件的IsEnabled属性为False时的状态。 以下是一个简单的例子&#xff1a; <Style TargetType"Button" x:Key"NormalButtonStyle&…

使用Go语言和chromedp库下载Instagram图片:简易指南

摘要/导言 本文将介绍如何使用Go语言配合chromedp库来下载Instagram上的图片。我们将通过一个简单的示例来展示整个过程&#xff0c;包括如何设置爬虫代理IP以绕过网络限制。 背景/引言 在数据采集和自动化测试领域&#xff0c;Go语言以其出色的执行效率、简洁的语法和卓越的…