Oralce数据库之存储过程、存储函数、触发器和数据字典
2017-01-14 20:42
295 查看
Oracle数据库总结
Oracle数据库之集合运算Oracle数据库之数据处理
Oracle数据库之建表和管理表
Oracle数据库之对象视图、索引、序列、同义词
一、存储过程和存储函数
1、概念存储在数据库中供所有用户程序调用的子程序,称为存储过程或者存储函数
2、存储过程语法
create [or replace] procedure 过程名(参数列表) as plsql子程序体
实例1:
create or replace procedure sayhelloworld as --说明部分 begin dbms_output.put_line('Hello World'); end; /
实例2:
--给指定的员工涨500,并且打印涨前和涨后的薪水 create or replace procedure raiseSalary(eno in number) as --定义变量保存涨前的薪水 psal emp.sal%type; begin select sal into psal from emp where empno=eno; update emp set sal = sal+500 where empno=eno; dbms_output.put_line('涨前:'||psal||' 涨后:'||(psal+100)); end; /
3、存储函数
函数为一命名的存储程序,可带参数,并返回一个计算值。函数和存储过程类似,但函数必须return子句用于返回值。函数说明必须指定函数名、结果值的类型和参数类型。
语法结构
create [or replace] function 函数名(参数列表) return 函数值类型 as plsql子程序体
实例1:
--查询某个员工的年收入 create or replace function queryempincome(eno in number) return number as --月薪和奖金 psal emp.sal%type; pcomm emp.comm%type; begin select sal,comm into psal,pcomm from emp where empno=eno; --返回年收入 return psal*12+nvl(pcomm,0); end; /
实例2:
create or replace procedure queryempinfo(eno in number, pename out varchar2, psal out number, pjob out varchar2) as begin select ename,sal,empjob into pename,psal,pjob from emp where empno=eno; end; /
二、触发器
1、概念数据库触发器是一个与表相关联的、存储的pl/sql程序。每当一个特定的数据操作语句(insert、delete、update)在指定的表上发出时,oracle自动的执行触发器中定义的语句序列。
2、触发器的类型
1)语句级触发器
在指定的操作语句之前或者是之后执行一次,不管这条语句影响了多少行。
2)行级触发器(for each row)
触发语句作用的每一条语句都会触发。
3、触发器语法
create [or replace] trigger 触发器名 {before|after} {delete|insert|update[of 列名]} on 表名 [for each row [when(条件)]] pl/sql语句块
实例1:
--成功插入新员工后,自动打印“very good” create or replace trigger saynewemp after insert on emp declare begin dbms_output.put_line('very good'); end; /
实例2:
/* 涨后的工资不能少于涨前的工资 */ create or replace trigger checksalary before update on emp for each row begin --if 涨后的薪水 < 涨前的薪水 then if :new.sal < :old.sal then raise_application_error(-20002,'涨后的工资不能少于涨前的工资。涨前:'||:old.sal||' 涨后:'||:new.sal); end if; end; /
三、数据字典
1、数据字典介绍oracle数据字典是有表和视图组成的,存储有关数据库结构信息的一些数据库对象。数据库字典描述了实际数据是如何组织的。对它们可以象处理其他数据库表或视图一样进行查询,但不能进行任何修改。
Oracle数据库字典通常是在创建和安装数据库时被创建的,Oracle数据字典是Oracle数据库系统工作的基础,没有数据字典的支持,Oracle数据库系统就不能进行任何工作。
在Oracle数据库字典中,许多视图都有三个不同的实例,它们的前缀分别为”USER_”、”ALL_”及”DBA_”。”USER_”为前缀的数据库字典视图通常记录执行查询的帐户所拥有的对象的信息,”ALL_”为前缀的数据库字典视图通常记录包括执行查询的帐户所拥有的对象的信息及授权至PUBLIC的帐户用户所拥有的对象的信息,”DBA_”为前缀的数据库字典视图则包含所有数据库对象的信息,而不管其所有者。其他的字典视图中主要的是V视图,之所以这样叫是因为他们都是以V或GV开头的。V视图是基于X虚拟视图的。V视图是SYS用户所拥有的,在缺省状况下,只有SYS用户和拥有DBA系统权限的用户可以看到所有的视图,没有DBA权限的用户可以看到USER_和ALL_视图,但不能看到DBA_视图。与DBA_,ALL,和USER_视图中面向数据库信息相反,这些视图可视的给出了面向实例的信息。
在Oracle的绝大多数数据字典视图中都有象DBA_TABLES,ALL_TABLES和USER_TABLES这样的视图家族。Oracle中有超过100个视图家族,下表列出了最重要和最常用的视图家族,需要注重的是每个视图家族都有一个DBA_,一个ALL_一个USER_视图。
在Oracle中还有一些不常用的数据字典表,但这些表不是真正的字典家族,他们都是一些重要的单一的视图。这些视图见下表:
相关文章推荐
- 数据库基础知识点二:PLSQL、游标、程序包、存储过程、触发器,序列,视图,索引,数据字典
- 从已有数据库生成脚本来获得生成数据表、视图、函数、存储过程以及触发器的SQL语句
- SQL-SERVER数据库中的游标、存储过程和触发器 关键词 SQL-SERVER、游标、存储过程、触发器、高效处理数据
- SqlServer2005(2000)数据库字典,将表数据生成SQL脚本的存储过程 (转)
- 存储过程将.txt.xls文件数据导入数据库表格
- 一个将数据导出到EXCEL的存储过程-数据库专栏,SQL Server
- MySQL存储过程和触发器的实现--数据库学习笔记
- oracle 存储过程和触发器复制数据
- 利用存储过程读指定文件夹里所有txt文件,将数据插入数据库中
- 如何在触发器或存储过程中实现变量数据表
- 利用存储过程和触发器来管理数据库
- 计算数据库中数据总和的存储过程
- 调试存储过程或触发器时请先看看是本地数据库还是其它服务器
- 返回数据库数据的存储过程函数(4个参数)(SQL Server)
- proc 存储过程,通过存储过程往数据库的某个表中插入指定数据量的纪录,表中有primary key
- 将数据库表中的数据生成Insert脚本的存储过程!!!
- 利用存储过程数据库中的数据生成txt文件
- 存储过程将.txt.xls文件数据导入数据库表格
- 数据库操作_连接SQL Server数据库示例;连接ACCESS数据库;连接到 Oracle 数据库示例;SqlCommand 执行SQL命令示例;SqlDataReader 读取数据示例;使用DataAdapter填充数据到DataSet;使用DataTable存储数据库表;将数据库数据填充到 XML 文件;10 使用带输入参数的存储过程;11 使用带输入、输出参数的存储过程示;12 获得数据库中表的数目和名称;13 保存图片到SQL Server数据库示例;14 获得插入记录标识号;Exce