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 ...
随机推荐
- css3过渡效果
- CH Round #56 - 国庆节欢乐赛解题报告
最近CH上的比赛很多,在此会全部写出解题报告,与大家交流一下解题方法与技巧. T1 魔幻森林 描述 Cortana来到了一片魔幻森林,这片森林可以被视作一个N*M的矩阵,矩阵中的每个位置上都长着一棵树 ...
- 安装rabbitmq
安装配置epel源 $ rpm -ivh http://dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm 安装erlan ...
- 【转】Java读取matlab的.mat数据文件
参考:Java读取mat文件 下载链接:ujmp jmatio 下载完两个.jar文件之后,如何引用到java项目当中?项目名称->右键->Property->Java Build ...
- linux——常用命令与脚本
linux常用命令 --文件管理pwd --查看当前目录cd --切换当前目录ls --列出当前目录下的所有文件touch --创建文件mkdir --建立目录rmdir --删除空目录rm --删除 ...
- C#动态创建和动态使用程序集、类、方法、字段等
C#动态创建和动态使用程序集.类.方法.字段等 分类:技术交流 (3204) (3) 首先需要知道动态创建这些类型是使用的一些什么技术呢?其实只要相关动态加载程序集呀,类呀,都是使用反射,那么动 ...
- selenium常用的js总结
1. 对input执行输入 直接设置value属性, 此方法主要应对输入框自动补全以及readonly属性的element,sendkeys不稳定 比如: //inputbox is a WebEle ...
- stdlib.h stdio.h
stdlib.h 即standard library标准库头文件.stdlib.h里面定义了五种类型.一些宏和通用工具函数. 类型例如size_t.wchar_t.div_t.ldiv_t和lldiv ...
- Mybatis Collection查询集合只出现一条数据
1.原因 如果两表联查,主表和明细表的主键都是id的话,明细表的多条只能查询出来第一条. 2.解决办法 级联查询的时候,主表和从表有一样的字段名的时候,在mysql上命令查询是没问题的.但在mybat ...
- C#创建socket服务
1.新建windows服务,名称(WebSendMsgSocket,注意检查属性-版本号) 双击Service1.cs打开设计视图,在设计视图中右键,选择添加安装程序 安装serviceProc ...