分类: Oracle
2012-08-16 13:42:28
欠缺的内容:包的创建和使用。
包的定义形式如下:
包说明:
PACKAGE 包名 IS
--变量说明;
--游标说明;
--例外说明;
--记录说明;
--Plsql表说明;
--过程说明;
--函数说明;
END[包名];
包体:
PACKAGE BODY 包名 IS
--变量名说明;
--游标说明;
--游标申明;
--例外说明;
--记录说明;
--plsql说明;
--过程体;
--函数体;
BEGIN
--语句序列
END[包名];
创建一个包
CREATE OR REPLACE PACKAGE my_pak1
2 AS
3 TYPE emp_type IS RECORD(
4 gh emp.empno%type,
5 xm emp.ename%type,
6 gz emp.sal%type);
7 end;
8 /
调用该程序包
1 DECLARE
2 v1 my_pak1.emp_type;
3 BEGIN
4 SELECT empno,ename,sal into v1 FROM emp where empno='1';
5 DBMS_OUTPUT.PUT_LINE('工号是:'||v1.gh);
6 DBMS_OUTPUT.PUT_LINE('姓名是:'||v1.xm);
7 DBMS_OUTPUT.PUT_LINE('工资是:'||v1.gz);
8* END;
包的内容需要重新kan
视图:
是一个虚拟表,只是一个查询语句
视图比较安全,方便,一致性
CREATE OR REPLACE VIEW myview1
2 AS
3 SELECT * FROM books;
最简单的视图
如果向视图中插入或者修改数据,都会更改数据
可以在视图的创建时加入条件,让不能随便写入
1 CREATE OR REPLACE VIEW myview
2 AS
3 SELECT * FROM books WHERE price>30
4* WITH CHECK OPTION
如果使用WITH READ ONLY,那么就不能更新,只能查询
这个就是检查不能写入比30小的值,这个只能限制视图,不能限制表
如果视图是两个或两个以上的表构成,不能同时更新两个表,如果要使用可以使用替代触发器同时更新两
个或两个以上
需要查看用户视图可以查看DESC USER_VIEWS,还要DBA_VIEWS数据字典中
ORACLE中的同义词
就是一个对象的用户模式,比如访问另外一个用户需要加用户前缀
比如SCOTT用户的dept表,其他用户访问的时候就要用scott.dept
创建同义词的语法
CREATE SYNONYM 同义词名 FOR 用户.表名 --这种表示私有
使用CREATE PUBLIC SYNONYM 同义词名 FOR 用户.表名 表示公有
公共同义词和私有同义词
序列
一个独立型的事物,安装一定规则增加或减少
序列使用时机,默认从1开始,每次增加1
创建语法
CREATE SEQUENCE my_seq1 START WITH 1 INCREMENT BY 1 ORDER NOCYCLE;--从1开始,每次递增1,不循环
使用方法
select my_seq1.NEXTVAL FROM DUAL;
必须先查询NEXTVAL,才能使用CURRVAL.
创建一个表用于递增
将这个的值插入表的一列,相当于就是做递增的编号,自动编号
数据字典,几乎每一个都有,如DBA_VIEWS DBA_SEQUENCES等或者用户的USER_VIEWS ,USER_SEQUENCES
flashback 不支持sys和system用户
Flashback Drop 是从Oracle 10g 开始出现的, 用于恢复用户误删除的对象(包括表,索引等), 这个技
术依赖于Tablespace Recycle Bin(表空间回收站),这个功能和windows的回收站非常类似。
Flashback 不支持sys用户. system表空间下的对象,也不能从回收站里拿到。故使用SYS 或者SYSTEM用
户登陆时, show recyclebin 为空。