Oracle视图和触发器简单示例

来源:互联网 发布:西南交大网络教育网址 编辑:程序博客网 时间:2024/05/16 17:04

存储过程,触发器,视图在开发中都是比较常见的,存储过程的基本已经简单的介绍了,这里就不在废话了

视图:简单来说就是一张虚拟表,里面存放了从一张表或多张表中获取的我们想要的数据,视图存在于数据库中,不占物理内存,这个是相对的,因为视图本身的定义语句还是要存储在数据字典中的,视图只有逻辑定义,而且视图是可以操作基表的。每次使用的时候,只是重新执行SQL。要注意视图是不可以传参的,而存储过程是可以传参的。

建表:

//建表时每个字段的类型大小要合理create table(id varchar(8),name varchar(28),pwd varchar(38),address varchar(68))

创建视图:

//or replace:如果存在同名的视图, 则使用新视图"替代"已有的视图//v_test:视图名称,这个视图获取了user_info表中所有id='88'的数据create or replace view v_test as select * from user_info where id = '88'

调用视图:

select * from v_test//视图名称就相当于表名

通过视图操作基表:

//这里插入的数据其实是插入到user_info中去了insert into v_test(id,name,pwd,address) values('7','aaa','999','杭州')

触发器:触发器是在事件发生时隐式地自动运行的PL/SQL程序块,不能接收参数,不能被调用。注意:存储过程是显示的被调用,并且可以接收参数。

创建触发器:

//or replace:如果存在同名的触发器, 则使用新触发器"替代"已有的触发器create or replace trigger test//在触发事件之前执行,after:之后before    //触发事件:在向user_info表中插入数据之前执行该触发器     insert on user_info     //对表的每一行触发器执行一次。如果没有这一选项,则只对整个表执行一次。    for each row   begin    --你让触发器所要做的事情    dbms_output.put_line('插入前-----');  end;

测试:

--调用存储过程插入数据   begin    test('5','张三','255','江西南昌');    end;    //执行完你会在PLSQL输入台看到:插入前-----

总结:其实不管是视图、触发器还是存储过程,都不难的(但是对于目前作者来说还是蛮难的啦),它们的根本就在于写sql的能力,如果写sql的能力贼强,我相信写这些东西也是贼强的,总之一句话吧,会写sql的重要性大于写代码的重要性!

1 0
原创粉丝点击