WHEN子句说明触发约束条件。Condition为一个逻辑表达时,其中必须包含相关名称,而不能包含查询语句,也不能调用PL/SQL函数。WHEN子句指定的触发约束条件只能用在BEFORE和AFTER行触发器中,不能用在INSTEAD OF行触发器和其它类型的触发器中。
-- 创建记录操作事件的表
CREATE TABLE event_table(
event VARCHAR2(50),
time DATE
);
-- 创建触发器
CREATE OR REPLACE TRIGGER tr_startup
AFTER STARTUP
ON DATABASE
BEGIN
INSERT INTO event_table(event, time)
VALUES(ora_sysevent, SYSDATE);
END;
- 不能对rownum使用>(大于1的数值)、>=(大于1的数值)、=(大于1的数值),否则无结果。
2.在使用rownum时,只有当Order By的字段是主键时,查询结果才会先排序再计算rownum,但是,对非主键字段(如:name)进行排序时,结果可能
就混乱了。出现混乱的原因是:oracle先按物理存储位置(rowid)顺序取出满足rownum条件的记录,即物理位置上的前5条数据,然后在对这些数据按照Order By的字段进行排序,而不是我们所期望的先排序、再取特定记录数。
通常有三种执行不同类型的动态SQL方法:
- 使用EXECUTE IMMEDIATE语句。
除不能处理多行查询语句,其他的动态SQL包括DDL语句,DCL语句以及单行的SELECT查询都可以。 - REF CURSOR动态游标,使用OPEN-FOR,FETCH,CLOSE。
能处理动态的多行查询操作,必须要使用OPEN-FOR语句打开游标,使用FETCH语句循环提取数据,最终使用CLOSE语句关闭游标。 - 使用批量BULK COLLECT执行动态SQL。
通过使用批量动态SQL语句,可以加快SQL语句处理,进而提高PL/SQL的性能。
1. 视图简介
视图是基于一个表或多个表或视图的逻辑表,本身不包含数据,通过它可以对表里面的数据进行查询和修改。
2. 创建视图
3. 视图的优点
4. 索引
为了提高查询的速度,当用户对查询速度不满意而需要对数据库的性能进行调校时,优先考虑建立索引。