oracle 存储过程、函数和触发器用法实例详解
发表于:2024-09-22 作者:千家信息网编辑
千家信息网最后更新 2024年09月22日,本文实例讲述了oracle 存储过程、函数和触发器用法。分享给大家供大家参考,具体如下:一、存储过程和存储函数指存储在数据库中供所有用户程序调用的子程序叫存储过程、存储函数。创建存储过程用CREATE
千家信息网最后更新 2024年09月22日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安全错误
数据库的锁怎样保障安全
数据库技术与应用范式
计算机网络技术相关公司
在线数据库历史数据清理思路
网络安全学院的录取分数线
计算机应用的数据库
收费站系统的网络安全包括
linux数据库网络协议
铁路网络安全生产
app软件开发工程师要求
昆明市游戏软件开发设计
壹飞网络技术有限公司
互联网金融科技有哪些
成都做软件开发的公司有哪些
软件开发公司贴牌
数据库多级模式结构
服务器安全狗要钱吗
通用网络技术咨询口碑推荐
最大的中医数据库
iis部署数据库如何改
如何提取多表格数据库
莫格莱尼服务器登不上去
精通网络安全防疫
win 服务器安全软件
服务器cpu使用率100
数据库集合查询(不在集合中)
关于网络安全提出建议和意见
数据库恢复原样
数据库 cdur
分销记录软件开发公司
贵州翌宸致信软件开发