• 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

            

              

  • 相关阅读:
    Linux文件和目录管理常用重要命令
    Windows和Linux下Mysql 重置root 密码
    瀑布流vue-waterfall的高度设置
    vue-cli 引入axios及跨域使用
    Vue 脱坑记
    shell基础
    正则
    安装卸载
    压缩打包
    vim工具
  • 原文地址:https://www.cnblogs.com/shuaif/p/3505330.html
Copyright © 2020-2023  润新知