表结构信息,并不是用oracle描述的,但是后面的存储过程是针对oracle的

----------------个人交易流水表-----------------------------------
create table epc_flog (
mainid     int              primary key,自增
senddt     smalldatetime         null ,		--交易时间
brchno     varchar(20)           null ,		--机构号
custid     varchar(20)           null ,		--客户号
trancd     varchar(20)           null ,		--交易码   (其实是一种类型,,暂时用1表示行内,2表示跨行)
tranam     decimal(15,2)         null ,	        --交易金额
tranfe     decimal(15,2)         null,		--交易手续费
)

-----------------个人网银交易统计--------------------------------
create table dbo.emp_trpt (
mainid     int                   primary key,自增
rprtdt     smalldatetime         null ,
intrnm int NULL ,			--新增行内转账笔数
intram decimal(15,2) null,		--新增行内转账金额
ontrnm int NULL ,			--新增跨行转账笔数
ontram decimal(15,2) null,		--新增跨行转账金额
rptpfg     char(1)               null ,	-- 0:日报表 1:月报表 2:季报表 3:年报表
)
--功能:
--1、可按日、月维度统计转账交易的统计
--2、eb_rp_pertrancereportday查询epc_flog表,统计出当天的交易量,并写入到emp_trpt表
--3、eb_rp_pertrancereportmonth从emp_trpt表查询该月每天的交易量并进行统计,统计结果也写入到emp_trpt表
---创建存储过程.(日统计)
create or replace procedure  p_pertrancereportday(pdate in date)
	as
	     --定义游标,其实就是一个结果集
		Cursor my_cursor
		is
		select TRANCD ,count(1) pcount,sum(TRANAM) pamount
		from EPC_FLOG
	        where SENDDT between (pdate-interval '24' hour) and pdate
	        group by TRANCD ;
         --定义游标变量
		c_row my_cursor%rowtype ;

	begin
		--使用for in loop迭代游标
		for c_row in my_cursor loop

	        if c_row.TRANCD='1' then

		   insert into EMP_TRPT(RPRTDT,INTRNM,INTRAM,ONTRNM,ONTRAM,RPTPFG)
		   values(pdate,c_row.pcount,c_row.pamount,0,0.00,'0'); --行内数据
		else
		   insert into  EMP_TRPT(RPRTDT,INTRNM,INTRAM,ONTRNM,ONTRAM,RPTPFG)
		   values(pdate,0,0.00,c_row.pcount,c_row.pamount,'0'); --跨行数据
		end if;

		end loop;
	end;

----存储过程的调用
declare
pdate date:= to_date('2013-07-08 17:00:00','yyyy-MM-dd hh24:mi:ss') ;
begin
p_pertrancereportday(pdate);
end;
/
----创建存储过程(月统计,可用)
--本来不想用游标,因为只有一条数据,但是聚合函数在这里用了多个,普通的查询sum(INTRNM) into  pintrnm,sum(INTRAM) into pintram等 不行
create or replace procedure p_pertrancereportmonth(pdate in date)
	as
		Cursor my_cursor
		is
		select  sum(INTRNM) pintrnm, sum(INTRAM) pintram, sum(ONTRNM) pontrnm, sum(ONTRAM) pontram
		from EMP_TRPT
	        where RPTPFG='0' and  RPRTDT between trunc(pdate,'MON') and pdate ; --用到了oracle的时间函数
		c_row my_cursor%rowtype ;
	begin
		for c_row in my_cursor loop
		  insert into EMP_TRPT(RPRTDT,INTRNM,INTRAM,ONTRNM,ONTRAM,RPTPFG)
			 values(pdate,c_row.pintrnm,c_row.pintram,c_row.pontrnm,c_row.pontram,'1');

		end loop;
	end;

Oracle表主键自动生成,需要使用序列和触发器来完成

--创建序列
      drop sequence emp_trpt_tb_seq;
      create sequence emp_trpt_tb_seq
               increment
               start ;
--创建序列
 create or replace trigger emp_trpt_tb_tri
          before insert on emp_trpt
          for each row
          begin
                 select emp_trpt_tb_seq.nextval into :new.MAINID from dual;
          end;

Oracle存储过程 一个具体实例的更多相关文章

  1. Oracle创建表语句(Create table)语法详解及示例、、 C# 调用Oracle 存储过程返回数据集 实例

    Oracle创建表语句(Create table)语法详解及示例 2010-06-28 13:59:13|  分类: Oracle PL/SQL|字号 订阅 创建表(Create table)语法详解 ...

  2. Oracle——存储过程简单入门实例

    1.连接plsql developer,打开一个SQL Window 2.SQL Window中创建表user_info -- Create table create table USER_INFO ...

  3. Oracle存储过程返回游标实例详解

    复制代码 代码如下:CREATE OR REPLACE PROCEDURE PROCSENDEMAIL(P_TXT VARCHAR2, P_SUB VARCHAR2, P_SENDOR VARCHAR ...

  4. Oracle 查看一个数据库实例下面所有的表大小

    1. 因为 oracle有一些 lob字段 在user_extents 里面取出来的结果不是表名, 所以需要与user_lobs 表做关联查询才可以 本来想通过 关联查询来实现, 发现字表查询更简单 ...

  5. oracle存储过程实例

    oracle存储过程实例 分类: 数据(仓)库及处理 2010-05-03 17:15 1055人阅读 评论(2)收藏 举报 认识存储过程和函数 存储过程和函数也是一种PL/SQL块,是存入数据库的P ...

  6. 将oracle冷备份恢复到另外一个数据库实例中

    因更换服务器需要将Oracle数据库转移到另外台Oracle中.说明: 1.测试环境为:windows server2003 和 oracle 10g. 2.2台服务器安装的程序目录一样,数据目录不一 ...

  7. ORACLE 从一个实例迁移到另外一个实例实战记录

    .schema1到schema2的迁移 Oracle 从一个用户expdp导出再impdp导入到还有一个用户,能够使用REMAP_SCHEMA=user1:user2来实现: 假设想导入的用户已经存在 ...

  8. oracle 存储过程

    来自:http://www.jb51.net/article/31805.htm Oracle存储过程基本语法 存储过程 1 CREATE OR REPLACE PROCEDURE 存储过程名 2 I ...

  9. Oracle存储过程语法

    原文链接:http://www.jb51.net/article/31805.htm Oracle存储过程基本语法 存储过程  1 CREATE OR REPLACE PROCEDURE 存储过程名  ...

随机推荐

  1. Centos7安装mysql-5.7.19

    Centos7安装Mysql 一 mysql下载 地址: https://dev.mysql.com/downloads/mysql/#downloads 二 在centos7上创建安装文件存放.解压 ...

  2. win7系统中如何使文件显示出扩展名或显示文件后缀名

    win7系统中如何使文件显示出扩展名-------------------- 1.点击计算机-->>点击组织,然后选择“文件夹及搜索选项”-->> -------------- ...

  3. 为shell布置陷阱:trap捕捉信号方法论

    本文目录: 1.1 信号说明 1.2 trap布置陷阱 1.3 布置完美陷阱必备知识 家里有老鼠,快消灭它!哎,又给跑了.老鼠这小东西跑那么快,想直接直接消灭它还真不那么容易.于是,老鼠药.老鼠夹子或 ...

  4. 《principles of model checking》中的离散时间马尔科夫链

    <principles of model checking>中的离散时间马尔科夫链 说明:此文为我自学<principles of model checking>第十章内容的笔 ...

  5. 解决VS2015中没有报表项(ReportViewer)的方法

    作者:何时.微笑成了种奢求 VS2015中没有报表项(ReportViewer),怎么办?这篇文章主要为大家详细介绍了解决VS2015中没有报表项(ReportViewer)的方法,感兴趣的小伙伴们可 ...

  6. 基于轻量级ORM框架Dapper的扩展说明

    这里简单的介绍一下本人基于Dapper作的一些简单的扩展,供大家参考. 为何要使用这款框架,相信大家看到下面排名就清楚了 其实在各大网站上,我们大概都会看到这样的一个对比效果图,在超过500次poco ...

  7. 数据结构-单向链表 C和C++的实现

    数据结构,一堆数据的存放方式. 今天我们学习数据结构中的 链表: 链表的结构: 链表是一种特殊的数组,它的每个元素称为节点,每个节点包括两个部分: 数据域:存放数据,此部分与数组相同 指针域:存放了下 ...

  8. Mysql数据库索引

    今天,我们来讲讲Mysql数据库的索引的一些东西,想必大家都知道索引能干吗?必然是查找数据表的时候,查找的速度快啊,尤其是那些几百万行的数据库,不建立索引,你是想考验用户的耐心吗?Mysql有多种存储 ...

  9. Informatica学习:1、安装介质的获取与安装

    本文目标: 为方便学习Informatica工具,在个人电脑上部署Informatica Powercenter. 所用系统:win7 64位. Informatica安装包括服务器端.客户端安装两个 ...

  10. chrome开发工具指南(八)

    编辑 DOM Chrome DevTools 的 Elements 面板中的 DOM 树视图可以显示当前网页的 DOM 结构.通过 DOM 更新实时修改页面的内容和结构. DOM 定义您的页面结构.每 ...