oracle 存储过程、函数和触发器用法实例详解
发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,本文实例讲述了oracle 存储过程、函数和触发器用法。分享给大家供大家参考,具体如下:一、存储过程和存储函数指存储在数据库中供所有用户程序调用的子程序叫存储过程、存储函数。创建存储过程用CREATE
千家信息网最后更新 2026年10月31日oracle 存储过程、函数和触发器用法实例详解
本文实例讲述了oracle 存储过程、函数和触发器用法。分享给大家供大家参考,具体如下:
一、存储过程和存储函数
指存储在数据库中供所有用户程序调用的子程序叫存储过程、存储函数。
创建存储过程
用CREATE PROCEDURE命令建立存储过程。
语法:
create [or replace] procedure 过程名(参数列表)asPLSQL子程序体;
--给指定员工涨工资create procedure addSal(empid in number)as psal emp.sal%type;begin select sal into psal from emp where empno=empid; update emp set sal = sal * 1.1 where empno=empid; dbms_output.put_line(empid || '涨工资前' || psal || '涨工资后' || (psal * 1.1));end;
调用存储过程
--方法一beginaddSal(7369);end;--方法二exec addSal(7369);
存储函数
函数为一命名的存储程序,可带参数,并返回一计算值。函数和过程的结构类似,但必须有一个return子句,用于返回函数值。函数说明要指定函数名,结果值的类型,以及参数类型等。
创建语法:
CREATE [OR REPLACE] FUNCTION 函数名 (参数列表)RETURN 函数值类型ASPLSQL子程序体;
--查询指定员工的年收入create function queryEmpSal(empid in number)return numberas psal emp.sal%type; pcomm emp.comm%type;begin select sal,comm into psal,pcomm from emp where empno=empid; return (psal*12) + nvl(pcomm,0);end;
函数的调用
declare psal number;begin psal:=queryEmpSal(7369); dbms_output.put_line(psal);end;
或
begin dbms_output.put_line(queryEmpSal(7369));end;
过程和函数中的IN和OUT
一般来讲,过程和函数的区别在于函数可以有一个返回值,而过程没有返回值。
但过程和函数都可以通过out指定一个或多个输出参数。我们可以利用out参数,在过程和函数中实现返回多个值。
什么时候用存储过程或函数?
原则:如果只有一个返回值,用存储函数,否则,就用存储过程。
创建包和包体
什么是包和包体?
包是一组相关过程、函数、变量、常量、类型和游标等PL/SQL程序设计元素的组合。包具有面向对象设计的特点,是对这些PL/SQL程序设计元素的封装。
包体是包定义部分的具体实现。
包由两个部分组成:包定义和包主体。
--包定义create [or replace] package 包名 as[公有数据类型定义][公有游标声明][公有变量、常量声明][公有子程序声明]end 包名;
--包主体create [or replace] package body 包名 as[私有数据类型定义][私有变量、常量声明][私有子程序声明和定义][公有子程序定义]beginPL/SQL子程序体;end 包名;
--创建mypackage包create or replace package mypackage as procedure total(num1 in number, num2 in number, num3 out number);end mypackage;
--mypackage包体create or replace package body mypackage as--计算累加和的total过程procedure total(num1 in number, num2 in number, num3 out number) as tmp number := num1;begin if num2 < num1 then num3 := 0; else num3 := tmp; loop exit when tmp > num2; tmp := tmp + 1; num3 := num3 + tmp; end loop; end if;end total;end mypackage;
(*注意:包定义和包体要分开创建)
调用包
declare num1 number;begin mypackage.total(1, 5, num1); dbms_output.put_line(num1);end;
更多关于Oracle相关内容感兴趣的读者可查看本站专题:《Oracle常用函数汇总》、《Oracle日期与时间操作技巧总结》及《php+Oracle数据库程序设计技巧总结》
希望本文所述对大家Oracle数据库程序设计有所帮助。
函数
过程
存储
子程序
参数
程序
类型
数据
设计
程序设计
变量
工资
常量
数据库
私有
主体
元素
员工
多个
技巧
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
互联网新科技
河南云网互联网络科技有限公司
云之行互联网科技
江苏根荣互联网科技
为想互联网科技怎么样
互联网科技官网
互联网巨头反垄断金融科技
互联网科技社
狮子座互联网科技
苏州互联网科技贷款公司
重庆互联网医院沙龙医盟信息科技
中国互联网十大科技股排名
天津腾达互联网科技有限公司
长沙茂晟互联网科技有限公司
南京一网一红互联网科技有限公司
广东鹅鹅鹅互联网科技有限公司
上海万顺科技互联网有限公司招聘
科技和互联网行业的特点
互联网科技的前景
网互联网络科技
云南咖啡
有格互联网科技
互联网科技工作委员会副主任毛军
科技类互联网
智网互联网科技
北京互联网络科技有限公司
宜安科技 互联网金融
小马过河互联网科技
隆华科技工业互联网
北京军民互联网科技公司