oracle视图和触发器简单示例,存储过程,触发器,视图在开发中都是比较常见的,存储过程的基本已经简单的介绍了,这里就不在废话了。
视图:简单来说就是一张虚拟表,里面存放了从一张表或多张表中获取的我们想要的数据,视图存在于中,不占物理内存,这个是相对的,因为视图本身的定义语句还是要存储在数据字典中的,视图只有逻辑定义,而且视图是可以操作基表的。每次使用的时候,只是重新执行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的重要性大于写代码的重要性!