Oracle索引视图存储过程触发器命令



Oracle索引视图存储过程触发器命令。

Oracle索引?

目地:更快地检索数据。

特点:读取数据速度快,但添加数据速度慢.。

语法:

create index idx_stu_email on stu (email) ;

drop index idx_stu_email ;

select index_name from user_indexs ;

 

Oracle视图?

特点:视图相当于子查询。

语法:

create view v$;

select view_name from user_views ;

desc v$_dept_avg_sal_info ;

create view v$_stu as select id,name from stu ;

 

Oracle存储过程?

语法:

1.创建不带参数的存储过程

create or replace procedure p

as

cursor c is

select * from emp for update;

begin

for v_emp in c loop

if(v_emp.deptno = 10) then

update emp set sal = sal +10 where current of c;

elsif (v_emp.deptno = 20) then

update emp set sal = sal + 20 where current of c;

else

update emp set sal = sal + 50 where current of c;

end if ;

end loop ;

commit ;

end ;

 

// 执行存储过程(两种方式)

· exec p;

· begin

p;

end;

2.创建带参数的存储过程

create or replace procedure p

(v_a in number,v_b number,v_ret out number)

is


begin

if(v_a > v_b) then

v_ret:=v_a ;

else

v_ret :=v_b ;

end if ;

 

end ;

 

// 执行带参数的存储过程

declare

v_a number:=3 ;

v_b number:=4 ;

v_ret number ;

begin

p(v_a,v_b,v_ret) ;

dbms_output.put_line(v_ret) ;

end ;

 

Oracle触发器?

利用触发器实现的业务如下:

现有两个表:emp和operate_info表,当用户对emp表进行增删改操作时,触发你所创建的触发器,该触发器执行向operate_info表中插入一条信息,记录用户对emp表的操作。

语法:

创建emp表:

create table emp

(

uname varchar2(20),

action varchar2(10),

atime date

)

 

// 创建触发器

create or replace trigger trig

after insert or delete or update on emp for each row

begin

if inserting then

insert into emp_log values (USER,’insert’,sysdate) ;

elsif updating then

insert into emp_log values (USER,’upate’,sysdate) ;

elsif deleting then

insert into emp_log values (USER,’dalete’,sysdate) ;

end if;

end ;

// 删除触发器

drop trigger trig ;