oracle 存储过程、函数和触发器用法实例详解
发表于:2025-11-06 作者:千家信息网编辑
千家信息网最后更新 2025年11月06日,本文实例讲述了oracle 存储过程、函数和触发器用法。分享给大家供大家参考,具体如下:一、存储过程和存储函数指存储在数据库中供所有用户程序调用的子程序叫存储过程、存储函数。创建存储过程用CREATE
千家信息网最后更新 2025年11月06日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安全错误
数据库的锁怎样保障安全
java软件开发测试工具
大足区综合软件开发流程要求
生成焓 数据库
nba篮球数据库
软件开发结算方式
淄博财务软件开发价格
请添加到小程序服务器域名中
数据库删除全部权限
网站的服务器委托管理系统
通信管理局网络安全
本地域名服务器在本机
表与数据库建立对象
软件开发研究生有前途吗
手机访问sanba服务器
西城区质量网络技术服务介绍
评论网络安全是四个维度
我区网络安全宣传
四个网络安全防护
服务器事件视频教程
软件开发的两种模式
数据库如何去掉重复的
数据库中字段要求
计算机网络技术与应用知识点
服务器 自动重启
成都软件开发设计
我的世界服务器 村民
软件开发实习生工资3000
服务器硬盘灯红色一直亮着
服务器就一块盘
部署linux服务器实训成果