plsql测试oracle存储过程,oracle存储过程基本结构的编写与plsql测试执行
create or replace procedure p_gift8_lottery(v_phone_number in varchar2,
v_tone_id in varchar2,
v_tone_code in varchar2,
v_tone_name in varchar2,
v_tone_type in number,
v_num out varchar2, --序列号
v_iswin out number, --是否中奖 0未中,1中奖
v_gift out number --几等奖。
) is
v_this_month varchar2(20); --本月时间
v_black_count number; --是否在黑名单中
v_gift_rate1 number; --一等奖数量
v_gift_rate2 number; --二等奖数量
v_gift_rate3 number; --三等奖数量
v_gift_rate4 number; --四等奖数量
v_gift_rate5 number; --五等奖数量
v_gift_rate4_dmax number; --四等奖每日上限数量
v_gift_rate5_dmax number; --五等奖每日上限数量
v_temp_count number;
v_temp_amount number;
v_temp_num number;
TYPE T_VARRAY IS VARRAY(2) OF NUMBER;
TYPE T_VARRAY_VARRAY IS VARRAY(21) OF T_VARRAY;
V_VAR T_VARRAY_VARRAY := T_VARRAY_VARRAY(T_VARRAY(1, 5),T_VARRAY(6, 10));--二维数组的使用
errno number; --异常编码
errterm varchar2(1000); --异常信息
begin
--本月时间
v_this_month := to_char(sysdate, 'yyyymm');
v_gift_rate1 := 1;
v_gift_rate2 := 3;
v_gift_rate3 := 15;
v_gift_rate4 := 60;
v_gift_rate5 := 600;
v_gift_rate4_dmax := 2; --4等奖每日限额
v_gift_rate5_dmax := 20; --5等奖每日限额
-- raise_application_error('-20002', 'you can not change the data !');--可以主动抛出异常
--为了控制中奖次数需要再建一个中奖信息统计表。
--如果中奖,修改中奖记录表
select ceil(dbms_random.value(0, 10000000)) ||
ceil(dbms_random.value(0, 8)) || ceil(dbms_random.value(0, 8))
|| ceil(dbms_random.value(0, 8)) into v_random_num from dual;--未中奖随机码
if v_gift = 1 then
select t.one into v_temp_count from t_rbt_gift9_result t for update;
if v_temp_count < v_gift_one then
update t_rbt_gift9_result t set t.one = (t.one + 1) where t.id = 1;
--1等奖随机码
select ceil(dbms_random.value(0, 10000000)) || '999' into v_random_num from dual;
else
v_gift := 0;
end if;
insert into t_rbt_gift9_info (ID,phone_number,gift,create_time,random_num)
values(seq_rbt_gift9_info.nextval,v_phone_number,v_gift,sysdate,v_random_num);
elsif v_gift = 2 then
......
end if;
commit;
exception
--异常处理
when others then
errno := sqlcode;
errterm := sqlerrm;
begin
rollback;
insert into T_RBT_JOB_LOGS
values
(SEQ_JOB_LOG.Nextval,
errno,
errterm,
'p_gift8_lottery',
sysdate);
v_gift := 0;--0等奖
v_result:='100003';
select ceil(dbms_random.value(0, 10000000)) ||
ceil(dbms_random.value(0, 8)) || ceil(dbms_random.value(0, 8))
|| ceil(dbms_random.value(0, 8)) into v_random_num from dual;--未中奖随机码
insert into t_rbt_gift9_info (ID,phone_number,gift,create_time,random_num)
values(seq_rbt_gift9_info.nextval,v_phone_number,v_gift,sysdate,v_random_num);
commit;
end;
end p_gift8_lottery;
declare
v_phone_number varchar2(20);
v_tone_id varchar2(20);
v_tone_code varchar2(20);
v_tone_name varchar2(20);
v_tone_type number;
v_num varchar2(20);--序列号
v_iswin number;--是否中奖 0未中,1中奖
v_gift number;--几等奖。
i number:=0;
begin
v_phone_number := '152800123123';
v_tone_id := '333';
v_tone_code:='421421';
v_tone_name:='aab';
v_tone_type :=3;
for i in 1..1000
loop
/*执行你的pro*/
p_gift8_lottery(v_phone_number,v_tone_id,v_tone_code,v_tone_name,v_tone_type,v_num,v_iswin,v_gift);
/*dbms_output.put_line('vnum: ' || v_num);
dbms_output.put_line('v_iswin: ' || v_iswin);
dbms_output.put_line('v_gift: ' || v_gift);
dbms_output.put_line('=============='|| i ||'============');*/
end loop;
end;
plsql测试oracle存储过程,oracle存储过程基本结构的编写与plsql测试执行相关推荐
- 分而治之_编写干净的测试–分而治之
分而治之 好的单元测试应该仅出于一个原因而失败. 这意味着适当的单元测试仅测试一个逻辑概念. 如果我们要编写干净的测试,则必须识别那些逻辑概念,并且每个逻辑概念只编写一个测试用例. 这篇博客文章描述了 ...
- 编写干净的测试–分而治之
好的单元测试应该仅出于一个原因而失败. 这意味着适当的单元测试仅测试一个逻辑概念. 如果我们要编写干净的测试,则必须识别这些逻辑概念,并且每个逻辑概念仅编写一个测试用例. 这篇博客文章描述了我们如何识 ...
- oracle 创建,删除存储过程,参数传递,创建,删除存储函数,存储过程和函数的查看,包,系统包
认识存储过程和函数 存储过程和函数也是一种PL/SQL块,是存入数据库的PL/SQL块.但存储过程和函数不同于已经介绍过的PL/SQL程序,我们通常把PL/SQL程序称为无名块,而存储过程和函数是以命 ...
- oracle 别名 存储过程_oracle 存储过程 别名
阿里云如何打破Oracle迁移上云的壁垒 2018第九届中国数据库技术大会,阿里云数据库产品专家萧少聪带来以阿里云如何打破Oracle迁移上云的壁垒为题的演讲.Oracle是指"数据库管理系 ...
- Oracle PL/SQL 存储过程
Oracle PL/SQL 存储过程 Oracle 简介: 是甲骨文公司的一款关系数据库管理系统.它是在数据库领域一直处于领先地位的产品.可以说Oracle数据库系统是目前世界上流行的关系数据库管理系 ...
- Oracle job procedure 存储过程定时任务
Oracle job procedure 存储过程定时任务 oracle job有定时执行的功能,可以在指定的时间点或每天的某个时间点自行执行任务. 一.查询系统中的job,可以查询视图 --相关视图 ...
- oracle表的历史数据转储过程,C#连接Oracle数据库通过存储过程操作数据库 - cuizm的专栏 - CSDN博客...
C#连接Oracle数据库通过存储过程操作数据库 收藏 此文于2011-06-07被推荐到CSDN首页 此文于2011-06-08被推荐到CSDN首页 如何被推荐? 之前笔者一直用C#连接SQL Se ...
- oracle 存储同步,Oracle数据库知识——存储过程篇
在线QQ客服:1922638 专业的SQL Server.MySQL数据库同步软件 存储过程是一组用于完成特定功能的SQL语句,该语句已编译并存储在数据库中.用户通过指定存储过程的名称并提供参数(如果 ...
- oracle收发邮件存储过程
oracle收发邮件存储过程 2012-04-13 13:33:32| 分类: .NET | 标签: |字号大中小 订阅 CREATE OR REPLACE PROCEDURE PROC_SEND ...
最新文章
- 防止被算力“锁死”,人工智能进化急需革命性算法
- 【管理心得之一】不要用“可有可无”的事,挑战他人对这件事的原则和底线...
- Spring Boot Dubbo 应用启停源码分析
- 从12306信息泄露了解何为黑客撞库拖库洗库
- 第十届山东省ACM省赛题解
- 移动后端支持平台Parse将API由Ruby迁移到Go
- iphone黑屏转圈_iphone8一直在黑屏转圈
- 为你的网站加上SSL,可以使用HTTPS进行访问
- Delphi指针总结
- python 字典写入excel_Python向excel中写入数据的方法
- Ext2、Ext3、Ext4的区别
- 易语言linux支持多线程,详解易语言启动多线程
- oracle本地数据库登录之连接pdb数据库
- 费用分摊分配用法(KSU5/KSV5/KB21N/KB11N)
- 怎么制作QQ动态表情包,GIF出处是哪
- 【BZOJ-4316】小C的独立集 仙人掌DP + 最大独立集
- 手机端获取用户详细地理位置(高德地图API)
- 剖析抖音快速涨粉的文案号,了解大佬运营技巧,学以致用
- Java项目:JSP在线学生选课管理系统
- 实现图的邻接矩阵和邻接表的存储