oracle PL/SQL高级特性
触发器:存放在数据库中,并被隐含执行的存储过程。
由触发事件,触发条件,触发操作组成。
DML触发器:指定触发器时机(before or after),触发事件(insert , delete, update),表名,触发类型,触发条件,触发操作
语句触发器:
- create [or replace] trigger trigger_name
- timing event1 [or event2 ..] on table_name
- PL/SQL block;
- trigger_name 触发器名
- event 事件
- table_name 表名
- timing 时机
行触发器:
- --序列
- create sequence seq_fc
- increment by
- start with
- --触发器
- create or replace trigger tr_fc
- before insert on FundCompany for each row
- begin
- select to_char('K'||to_char(seq_fc.nextval,'FM00000')) into :new.companyid from dual;
- end seq_fc;
- insert into FundCompany(Name,Content,Money,State) values('龙腾集团','<CLOB>','',)
- select * from FundCompany
管理触发器
1显示触发器信息(user_triggers 数据字典):select * from user_triggers where table_name='';
2禁用触发器(暂时失败):alter trigger trigger_name disable;
3激活触发器(重新生效):alter triggertrigger_name enable;
4禁止或激活表的所有触发器:
alter table table_name disable all triggers;
alter table table_name enable all triggers;
5重新编译触发器: alter trigger trigger_name compile;
6删除触发器:drop trigger trigger_name;
程序包(是oracle 的优点)
包是用于逻辑组合相关的PL/SQL类型(索引,记录类型),PL/SQL项(游标,游标标量)和PL/SQL 子程序(过程,函数)
优点:
简化应用设计
提高应用性能
实现信息的隐藏
子程序的重载 等
包由包头和包体组成,包头也称为包规范。
包规范实际是包与应用程序之间的接口,用于定义包的公用组件(常量,变量,游标,过程,函数等)
公用组件不仅可以在包内使用也可以被其他子程序引用
包体 用于实现包头定义的过程和函数
在包体中,用户可以单独定义私有组件,只能在包内使用
- --包头
- create or replace package FundManager_pack
- is
- name varchar2():='张三';
- state number(,):=;
- procedure p_select(fid varchar2);
- --添加基金公司
- procedure P_insertFundCompany(P_Name varchar2,P_Content clob,P_Money number,P_state number);
- end FundManager_pack;
- create or replace package body fundmanager_pack
- is
- --添加基金公司
- procedure P_insertFundCompany(P_Name varchar2,P_Content clob,P_Money number,P_state number)
- is
- begin
- insert into FundCompany(Name,Content,Money,State) values(P_Name,P_Content,P_Money,P_state);
- end P_insertFundCompany;
- end fundmanager_pack;
- --添加基金公司
- begin
- --调用
- fundmanager_pack.P_insertFundCompany('鸿通','地方',,);
- end;
oracle PL/SQL高级特性的更多相关文章
- Oracle PL/SQL 高级编程
1. 复合数据类型--记录类型 Ø 语法格式 type 类型名 is record ( 字段1 字段1类型 [not null]:=表达式1; 字段2 字段2类型 [not n ...
- Oracle PL/SQL高级应用 存储过程
有名字的Plsql块,成为Oracle的对象,在以后用到时可以直接调用. CREATE OR REPLACE PROCEDURE myproc(id IN varchar2) IS -IN 为输入参数 ...
- Oracle PL/SQL高级应用 视图 同义词 序列
视图: 视图叫虚表,即是在哪个表上建立的视图,将那个表的数据用一条查询sql语句查出的数据展现在该视图中,对这个视图操作就是只能对该视图中的数据进行操作,该操作也会保存在建立的表中.可以理解为表上表, ...
- Oracle PL/SQL高级应用 游标
游标可以处理SQL语句查询出来的结果集,进行逐条控制,其实游标在内存中申请空间,将自己指向SQL语句查询出来的结果集,有点像指针的感觉,游标使SQL更加的灵活. DECLARE CURSOR mycu ...
- Oracle.PL/SQL高级
一.匿名块 .使用returning ... INTO 保存增删改表数据时的一些列的值 ()增加数据时保存数据 DECLARE v_ename emp.ename%TYPE; v_sal emp.sa ...
- oracle学习笔记(十七) PL/SQL高级应用
PL/SQL高级应用 动态SQL 在PL/SQL中,不能直接执行DDL(create,alter,drop),得使用动态SQL,当然,除了DDL,动态SQL也可以执行DML(select,insert ...
- ORACLE PL/SQL编程详解
ORACLE PL/SQL编程详解 编程详解 SQL语言只是访问.操作数据库的语言,并不是一种具有流程控制的程序设计语言,而只有程序设计语言才能用于应用软件的开发.PL /SQL是一种高级数据库程序设 ...
- [顶]ORACLE PL/SQL编程详解之二:PL/SQL块结构和组成元素(为山九仞,岂一日之功)
原文:[顶]ORACLE PL/SQL编程详解之二:PL/SQL块结构和组成元素(为山九仞,岂一日之功) [顶]ORACLE PL/SQL编程详解之二: PL/SQL块结构和组成元素(为山九仞,岂一日 ...
- Oracle+PL+SQL从入门到精通.丁士锋.清华大学出版社.2012
\t第1篇 pl/sql开发入门第1章 oracle 11g数据库系统1.1 关系型数据库系统介绍1.1.1 什么是关系型数据模型1.1.2 数据库系统范式1.1.3 关系型数据库管理系统1.1.4 ...
随机推荐
- SSAS动态添加分区(一)
一.动态分区的好处就不说了,随着时间的推移,不可能一个度量值组都放在一个分区中,处理速度非常慢,如何动态添加分区,如何动态处理分区,成为了很多新手BI工程师一个头痛的问题,废话不多说,分享一下我的经验 ...
- SqlServer数据库大型应用解决方案总结
随着互联网应用的广泛普及,海量数据的存储和访问成为了系统设计的瓶颈问题.对于一个大型的互联网应用,每天百万级甚至上亿的PV无疑对数据库造成了相当高的负载.对于系统的稳定性和扩展性造成了极大的问题. 一 ...
- javascript数据结构-队列
gihub博客地址 队列(Queue)是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表.进行插 ...
- ViewPager切换滑动速度修改
ViewPager的setCurrentItem 滑动速度是写死地 下面的方法可以修改,在此以做记录 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 ...
- 安装第三方模块方法和requests
如何安装第三方模块 pip3 pip3 install xxxx 源码 下载,解压 进入目录 python setup.py inst ...
- Java 自动装箱、拆箱机制及部分源码分析
Integer i = 10; //装箱,反编译后发现调用Integer.valueOf(int i) int t = i; //拆箱,反编译后发现调用i.intValue() public clas ...
- C++中动态内粗分配new标识符的使用
new是C++中内建的操作符,具体用法见下面详解: (1)new用法一:基本数据类型的内存动态分配 int *p; p=new int(10): 在这个例子中首先定义个一个指向整型类型的指针,紧接着用 ...
- 【JavaScript中的正则表达式】
原文地址:http://blog.csdn.net/xh16319/article/details/9987847 1. 正则表达式规则 1.1 普通字符 字母.数字.汉字.下划线.以及后边章节中没有 ...
- python+selenium 简单尝试
前言 selenium是一种自动化测试工具,简单来说浏览器会根据写好的测试脚本自动做一些操作. 关于自动化测试,一开始接触的是splinter,但是安装的时候发现它是基于selenium的,于是打算直 ...
- 【chrome插件】web版微信接入图灵机器人API实现自动回复
小贱鸡自动回复API已经不可以用了,现在改良接入图灵机器人API 360chrome浏览器团队翻译了部分谷歌插件开发文档 地址:http://open.chrome.360.cn/extension_ ...