Oracle中Trigger例子2

oracle

  PROCEDURE dcgn_dccm_crc (

      in_period       IN       VARCHAR2,

      in_soc          IN       VARCHAR2,

      in_actv_date    IN       VARCHAR2,

      o_soc_rcc_amt   OUT      NUMBER,

      o_ind           OUT      CHAR

   )

   IS

      -- Working Variables

      nbase_amt             NUMBER (19, 4)  DEFAULT 0;

      namt                  NUMBER (19, 4)  DEFAULT 0;

      nmax_rate             NUMBER (19, 4)  DEFAULT 0;

      nmin_rate             NUMBER (19, 4)  DEFAULT 0;

      ntmp_amt              NUMBER (19, 4)  DEFAULT 0;

      bissocfound           BOOLEAN         DEFAULT FALSE;

      vservice_feature      VARCHAR2 (10);                             --:1:2

      vsoc                  CHAR (9);

      deffective_date       DATE;

      vfeature_code         CHAR (6);

      crc_charge_lvl_code   CHAR (1);

      crc_usg_depend_code   CHAR (1);

      crc_rate_qty_type     CHAR (1);

      vsoc_v                CHAR (9);

      veffective_date_v     VARCHAR2 (14);

      vfeature_code_v       CHAR (6);

      bamt_cal_ind          BOOLEAN;

      namt_ws               NUMBER (19, 4);

      bsoc_ind              BOOLEAN;

      twhen                 TIMESTAMP ( 3 );

      ierr_code             INTEGER;

      vMsg              VARCHAR2 (255);

   BEGIN

      BEGIN

         SELECT rate_ftr.soc, rate_ftr.effective_date,

                rate_ftr.feature_code, rate_ftr.rc_charge_lvl_code,

                rate_ftr.rc_usg_depend_code, rate_ftr.rc_rate_qty_type

           INTO vsoc, deffective_date,

                vfeature_code, crc_charge_lvl_code,

                crc_usg_depend_code, crc_rate_qty_type

           FROM rated_feature rate_ftr, feature ftr

          WHERE rate_ftr.soc = in_soc

            AND rate_ftr.effective_date <= TO_DATE (in_actv_date, 'YYYYMMDD')

            AND NVL (TO_CHAR (rate_ftr.expiration_date, 'YYYYMMDD'),

                     '47001231'

                    ) >= in_actv_date

            AND rate_ftr.rc_info_ind = 'Y'

            AND rate_ftr.feature_code = ftr.feature_code

            AND ftr.feature_group = 'SF'

            AND ftr.period = rate_ftr.period

            AND ftr.period = in_period;

      EXCEPTION

         WHEN NO_DATA_FOUND

         THEN

                   END;

END;

时间: 2025-01-03 07:45:06

Oracle中Trigger例子2的相关文章

Oracle中Trigger例子1

oracle erOracle中Triggle例子1 CREATE OR REPLACE TRIGGER QMAILB.T_MSG_SI_TRIGGERAFTER INSERTON QMAILB.T_MSG_MO REFERENCING NEW AS NEW OLD AS OLDFOR EACH ROWDECLAREtmpVar NUMBER;v_link_id t_msg_mt.LINK_ID%type;v_src_termid t_msg_mt.SRC_TERMID%type;v_dst_t

Oracle中序列的使用例子

曾经在触发器中使用序列(SEQUENCE): create or replace trigger TRI_SUPPLIER before insert on SUPPLIER for each row begin select seq_supid.NEXTVAL into:new.supcode from dual; select seq_supid.CURRVAL into:new.supID from dual; end; 显然,忽略了并发,修改后如下: create or replace

Oracle中使用触发器(trigger)和序列(sequence)模拟实现自增列实例_oracle

问题:在SQL Server数据库中,有自增列这个字段属性,使用起来也是很方便的.而在Oracle中却没有这个功能,该如何实现呢? 答:在Oracle中虽然没有自增列的说法,但却可以通过触发器(trigger)和序列(sequence)来模式实现. 示例: 1.建立表 复制代码 代码如下: create table user  (       id   number(6) not null,       name   varchar2(30)   not null primary key  ) 

oracle中如何设置自增主键

 首先,你要有一张表! CREATE TABLE example( ID Number(4) NOT NULL PRIMARY KEY, NAME VARCHAR(25), PHONE VARCHAR(10), ADDRESS VARCHAR(50)); 如果对于以上的建表语句还有疑问的话,建议您不要继续了!有那么些时间您还不如去看看金庸读读琼瑶! 然后,你需要一个自定义的sequence CREATE SEQUENCE emp_sequence INCREMENT BY 1 -- 每次加几个

oracle中游标(Cursor)的详解

概述 也许大家对数据库中游标都不陌生,但对于其概念可能有时又会有些模糊,游标到底是什么? 为了使大家对游标有个清晰的认识,本文将介绍Oracle中游标(curosr)相关的知识. 游标的概念 一般来讲,游标包含着两种不同的概念: 程序中的游标(Program Cursor)和Oracle中的游标(Oracle Curosr). 程序中的游标(Program Cursor): 在最终用户程序(Client Application)中,游标(curosr)通常指和SQL语句关联的一个数据结构,用于关

Oracle触发器trigger详解_oracle

触发器相关概念及语法 概述 本篇博文中主要探讨以下内容: 什么是触发器 触发器的应用场景 触发器的语法 触发器的类型 案例 数据: 触发器的概念和第一个触发器 数据库触发器是一个与表相关联的,存储的PL/SQL 语句. 每当一个特定的数据操作语句(insert update delete)在指定的表上发出时,Oracle自动执行触发器中定义的语句序列. 举个简单的例子: 当员工表中新增一条记录后,自动打印"成功插入新员工" create or replace trigger inser

【sessions】Oracle中sessions和processes的大小关系(10g和11g不同)

[sessions]Oracle中sessions和processes的大小关系(10g和11g不同) 1  BLOG文档结构图 BLOG_Oracle_lhr_[sessions]Oracle中sessions和processes的大小关系(10g和11g不同).pdf 2  前言部分 2.1  导读和注意事项 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的知识,~O(∩_∩)O~: ① sessions和processes的大小设置,10g和11g不同(重点

在Oracle中计算时间差的方法

如何在Oracle中计算时间差呢?计算时间差是Oracle DATA数据类型的一个常见问题.Oracle支持日期计算,你可以创建诸如"日期1-日期2"这样的表达式来计算这两个日期之间的时间差. 一旦你发现了时间差异,你可以使用简单的技巧来以天.小时.分钟或者秒为单位来计算时间差.为了得到数据差,你必须选择合适的时间度量单位,这样就可以进行数据格式隐藏. 使用完善复杂的转换函数来转换日期是一个诱惑,但是你会发现这不是最好的解决方法. round(to_number(end-date-st

ORACLE中序列-sequence的应用

oracle oracle中没有象Acces中自动编号的字段类型,所以在oracle中要想用一个字段自动增值,还比较麻烦,在此提供给大家一个方法,利用序列,来完成字段的自动增加,下边介绍一下怎么创建序列,使用序列,和删除序列. 1.创建序列--------------create sequence  create sequence  Seq_AutoID   //所起序列名叫 Seq_AutoID ,需要记住此序列名,以后方可调用 minvalue   1   //最小值从1开始 可以根据自己的