zoukankan      html  css  js  c++  java
  • oracle PL/SQL高级特性

    触发器:存放在数据库中,并被隐含执行的存储过程。

                由触发事件,触发条件,触发操作组成。

    DML触发器:指定触发器时机(before or after),触发事件(insert  , delete, update),表名,触发类型,触发条件,触发操作

    语句触发器:

    create [or replace] trigger trigger_name
     timing event1 [or event2 ..] on table_name
     PL/SQL block;
    trigger_name 触发器名
    event 事件
    table_name 表名
    timing  时机
    View Code

    行触发器:

    --序列
    create sequence seq_fc
     increment by 1
     start with 353
     --触发器
    create or replace trigger tr_fc
     before insert on FundCompany for each row
     begin
        select to_char('K'||to_char(seq_fc.nextval,'FM00000')) into :new.companyid from dual;
       end seq_fc;
    insert into FundCompany(Name,Content,Money,State) values('龙腾集团','<CLOB>','200',0) 
    select * from FundCompany
    View Code

    管理触发器  

     1显示触发器信息(user_triggers 数据字典):select * from user_triggers where table_name='';

     2禁用触发器(暂时失败):alter trigger trigger_name disable;

     3激活触发器(重新生效):alter triggertrigger_name enable;

     4禁止或激活表的所有触发器: 

               alter table table_name disable all triggers;

                alter table table_name enable all triggers;

     5重新编译触发器: alter trigger trigger_name compile;

     6删除触发器:drop trigger trigger_name;

    程序包(是oracle 的优点)

     包是用于逻辑组合相关的PL/SQL类型(索引,记录类型),PL/SQL项(游标,游标标量)和PL/SQL 子程序(过程,函数)

      优点:

           简化应用设计

           提高应用性能

           实现信息的隐藏

           子程序的重载 等

    包由包头和包体组成,包头也称为包规范。

    包规范实际是包与应用程序之间的接口,用于定义包的公用组件(常量,变量,游标,过程,函数等)

    公用组件不仅可以在包内使用也可以被其他子程序引用

    包体 用于实现包头定义的过程和函数

    在包体中,用户可以单独定义私有组件,只能在包内使用

    --包头
    create or replace package  FundManager_pack
    is 
      name varchar2(20):='张三';
      state number(1,0):=0;
      
     procedure p_select(fid varchar2);
     --添加基金公司
      procedure P_insertFundCompany(P_Name          varchar2,P_Content clob,P_Money number,P_state number);
    end FundManager_pack;  
    create or replace package body fundmanager_pack
    is
      --添加基金公司
    procedure P_insertFundCompany(P_Name varchar2,P_Content clob,P_Money number,P_state number) 
     is
     begin
       insert into FundCompany(Name,Content,Money,State) values(P_Name,P_Content,P_Money,P_state);
      end P_insertFundCompany;
     end fundmanager_pack;
    --添加基金公司
    begin 
    --调用
         fundmanager_pack.P_insertFundCompany('鸿通','地方',5000,1);
     end;
    View Code

            

              

  • 相关阅读:
    C语言-错误处理
    C语言-排序和查找
    PCB设计要点
    C语言-调试
    c++ 概述
    C语言-指针
    C语言-数组与指针 字符与字符串
    C语言-(void*)类型指针
    C语言-字符操作函数
    C语言-链表
  • 原文地址:https://www.cnblogs.com/shuaif/p/3505330.html
Copyright © 2011-2022 走看看