Oracle数据库零散知识03

 

 

21,存储过程,简化复杂操作,增加数据独立性,提高安全性,提高性能

与函数创建对比:

create or replace function fun_01(v_01 in number)
    return number--必须要求有返回值
    as
    result number;
    begin
    result := power(v_01,2);
    return result;
    end;
    /

Function created.

select fun_01(9) from dual;

 FUN_01(9)
----------
        81

  

存储过程创建示例,不要求有返回值:

create or replace procedure pro_01(v_01 in number)
    as
    result number;
    begin
    result := power(v_01,2);
    dbms_output.put_line(result);
    end;
    /

Procedure created.

execute pro_01(9);
81

PL/SQL procedure successfully completed.

  

22,触发器,一种特殊的存储过程

create table log_tab--创建一个日志表
    (
    l_id number(3),
    l_old varchar2(20),--删除和已更新的主键
    l_type varchar2(10),--执行的操作类型
    l_new varchar2(20),--添加和已更新的主键
    l_date date,--更改的日期
    constraint pk_log_tab primary key(l_id)
    );

Table created.

  

create sequence log_tab_id--创建一个序列
    minvalue 100
    maxvalue 300
    start with 100
    increment by 1;

Sequence created.

  

create or replace trigger tr_student02--创建一个触发器
    after insert or update or delete –后插入更新删除
    on student02--针对student02表
    for each row—针对行触发
    begin
    case
    when inserting then—插入触发
    insert into log_tab values
    (
   log_tab_id.nextval,
   null,
   'insert',
   :new.sno,--导入inserted表中数据
   sysdate);
   when deleting then—删除触发
   insert into log_tab values
   (
   log_tab_id.nextval,
   :old.sno,--导入deleted表中数据
   'delete',
   null,
   sysdate);
   when updating then—更新触发
   insert into log_tab values
   (
   log_tab_id.nextval,
   :old.sno,
   'update',
   :new.sno,
   sysdate);
   end case;
  end;

  

delete from student02 where rownum = 1;
insert into student02(sno,sname,ssex) values(123,'hook','m');
 update student02 set sname = 'tokl' where sno = 123;



 select * from log_tab;

      L_ID L_OLD                L_TYPE     L_NEW                L_DATE
---------- -------------------- ---------- -------------------- ---------
       101 109                  delete                          28-OCT-15
       102                      insert     123                  28-OCT-15
       103 123                  update     123                  28-OCT-15

 

23,Oracle别名as使用的时候,不能使用在表上,只能使用在列上,表使用空格别名。。

24,通配符'_'使用的时候,如果字段使用的char型,固定长度,需要用通配符补全

25,排序 空值在前在后  nulls first ..nulls last

posted @ 2015-10-28 11:40  WhyToHow  阅读(149)  评论(0编辑  收藏  举报