CREATE OR REPLACE FUNCTION USER_EXP_TIME_FUN(iExpTime IN NUMBER)
RETURN NUMBER
IS
iExpMin number:=trunc(iExpTime/60);
iLevel number:=0;
iNowUpExp number:=0;
iLastUpExp number:=2*60;
iCheckLevelExp number:=0;
iNextLevelExp number:=0;
BEGIN
IF iExpMin < 120 THEN
iLevel:=1;
ELSE
FOR i IN 1..100 LOOP
iNowUpExp:=iLastUpExp+(i-1)*120;
iCheckLevelExp:=iCheckLevelExp+iNowUpExp;
IF iExpMin >= iCheckLevelExp THEN
iNextLevelExp:=iCheckLevelExp+iNowUpExp+i*120;
IF iExpMin < iNextLevelExp THEN
iLevel:=i+1;
END IF;
END IF;
iLastUpExp:=iNowUpExp;
END LOOP;
END IF;
return iLevel;
END;
/
CREATE OR REPLACE PROCEDURE daily_rank_pro IS
type rc is ref cursor;
money_rank_cur rc;
integral_rank_cur rc;
exp_time_rank_cur rc;
competition_rank_cur rc;
competition_expect_num number;
competition_level_id number;
rank_user_name varchar2(20);
rank_result number;
rank_count number:=1;
BEGIN
delete from user_rank;
open money_rank_cur for select aa.user_name user_name , (aa.money + aa.bank_money) money from ((select user_name , money , bank_money from users t where t.vip_type = 96 and t.money + t.bank_money >= 2000000 order by money + bank_money desc) aa) where rownum <= 10;
loop
fetch money_rank_cur into rank_user_name, rank_result;
exit when money_rank_cur%notfound;
insert into user_rank values(user_rank_seq.nextval, rank_user_name, rank_count, 0, rank_result);
rank_count:=rank_count+1;
end loop;
close money_rank_cur;
rank_count:=1;
open integral_rank_cur for select aa.user_name user_name , (aa.integral + aa.bank_integral) integral from ((select user_name , integral , bank_integral from users t where t.vip_type = 96 and t.integral + t.bank_integral >= 50000 order by integral + bank_integral desc) aa) where rownum <= 10;
loop
fetch integral_rank_cur into rank_user_name, rank_result;
exit when integral_rank_cur%notfound;
insert into user_rank values(user_rank_seq.nextval, rank_user_name, rank_count, 1, rank_result);
rank_count:=rank_count+1;
end loop;
close integral_rank_cur;
rank_count:=1;
open exp_time_rank_cur for select aa.user_name user_name , aa.exp_time exp_time from ((select user_name , exp_time from users t where t.vip_type = 96 order by exp_time desc) aa) where rownum <= 10;
loop
fetch exp_time_rank_cur into rank_user_name, rank_result;
exit when exp_time_rank_cur%notfound;
insert into user_rank values(user_rank_seq.nextval, rank_user_name, rank_count, 2, USER_EXP_TIME_FUN(rank_result));
rank_count:=rank_count+1;
end loop;
close exp_time_rank_cur;
rank_count:=1;
select EXPECT_NUM, COMPETE_LEVEL_ID into competition_expect_num, competition_level_id from competition_game_log c where c.EXPECT_NUM = (select max(EXPECT_NUM) from competition_game_log where game_id = 121);
open competition_rank_cur for select pc.user_name,pc.duel_integral from previous_competition pc where pc.expect_num = competition_expect_num and pc.compete_level_id = competition_level_id and pc.game_id = 121 and pc.emiction <= 10 order by pc.emiction;
loop
fetch competition_rank_cur into rank_user_name, rank_result;
exit when competition_rank_cur%notfound;
insert into user_rank values(user_rank_seq.nextval, rank_user_name, rank_count, 3, rank_result);
rank_count:=rank_count+1;
end loop;
close competition_rank_cur;
END;
/
分享到:
相关推荐
1. **PL/SQL基础**:手册可能会从基础开始,介绍PL/SQL的基本结构,包括声明变量、常量、游标、记录类型等。还会讲解如何编写存储过程、函数和触发器。 2. **控制流程语句**:这包括条件判断(IF-THEN-ELSIF-ELSE)...
Oracle 10g PL/SQL 是Oracle数据库系统中用于创建和管理存储过程、函数、触发器等数据库对象的编程语言。本教程旨在为初学者提供一个全面的学习平台,同时也为经验丰富的开发者提供参考资料。PL/SQL是Oracle特有的...
同时,PL/SQL支持多种数据类型,包括数值类型(NUMBER)、字符类型(VARCHAR2, CHAR)、日期类型(DATE)等,以及复合类型如记录(RECORD)和表类型(TABLE)。 此外,PL/SQL的包(PACKAGE)概念是将相关的过程和...
在实际应用中,PL/SQL VCS插件的使用能够帮助团队更好地协同工作,避免因为代码覆盖或版本冲突导致的问题。它提供了版本历史记录,使得开发者可以追溯脚本的修改历程,了解每个更改的详情。同时,它也有助于回滚到...
- **集合与记录**:学习如何使用PL/SQL中的集合和记录类型,这些结构可以帮助更高效地处理数据集。 - **游标**:介绍游标的使用方法,包括隐式游标和显式游标,以及如何利用游标遍历查询结果。 #### 四、PL/SQL中的...
PL/SQL的使用需要对Oracle数据库有深入的理解,它不仅提供了强大的数据库编程能力,还简化了数据库应用程序的开发。对于那些在Oracle环境中工作的开发者和DBA而言,掌握PL/SQL是必不可少的技能。这款名为“plsql”的...
需要注意的是,在PL/SQL中只能使用SQL的DML(Data Manipulation Language)部分,而不能直接使用DDL(Data Definition Language)部分,如创建表(CREATE TABLE)等操作。如果需要在PL/SQL中执行DDL操作,则需要通过...
2. **变量和数据类型**:PL/SQL支持多种数据类型,包括数值型(NUMBER、BINARY_INTEGER、PLS_INTEGER)、字符型(VARCHAR2、CHAR)、日期型(DATE)、布尔型(BOOLEAN)以及复合数据类型如记录和数组。 3. **控制...
7. **记录类型和变量**:PL/SQL支持自定义记录类型和变量,使得可以创建更贴近业务需求的数据结构。 这个"PL/SQL安装包"可能包含了以下组件: - **PL/SQL Developer**:一个强大的Oracle数据库开发工具,支持PL/...
《Oracle PL/SQL专家指南-高级PL/SQL解决方案的设计与开发》是一本深入探讨Oracle数据库中的PL/SQL编程的专业书籍。PL/SQL是Oracle数据库特有的编程语言,它结合了SQL的查询能力与过程式编程语言的功能,使得数据库...
在"Oracle Database 12c PL/SQL开发指南(第7版)"这本书中,作者深入浅出地介绍了如何使用PL/SQL进行数据库开发。这本书涵盖了许多关键知识点,包括但不限于: 1. **PL/SQL基础**:PL/SQL的基础语法,如变量声明、...
理解如何声明和使用这些数据类型是编写有效PL/SQL程序的基础。 3. **控制结构**:学习如何使用流程控制语句,如IF、CASE、WHILE和FOR循环,能帮助你在处理数据时做出决策或重复执行特定任务。 4. **游标**:游标是...
1、PL/SQL简介 2、PL/SQL基础 3、记录和表 4、在PL/SQL中使用SQL 5、内置SQL函数 6、游标 7、过程和函数 ...
- **PL/SQL记录和表类型**:支持自定义复杂数据结构,模拟类似面向对象的概念。 这份“PL/SQL使用说明书(完整版)”会详细讲解这些概念,并通过实例解析其用法,帮助读者理解和掌握PL/SQL编程,无论是初学者还是...
5. **记录和表操作**:PL/SQL提供了内置的DML(数据操纵语言)语句,如INSERT、UPDATE、DELETE,可以直接在PL/SQL块中操作数据库表。教材还会讲解如何使用BULK COLLECT和FORALL语句进行批量操作,提高效率。 6. **...
在"Oracle PL/SQL实例精解 数据库建立代码"中,我们将深入探讨如何在Oracle数据库中使用PL/SQL来构建一个名为"student"的模式,这包括创建数据库对象如表、索引,以及填充样本数据。 首先,"student"模式可能包含一...
Transact-SQL(T-SQL)是Microsoft SQL Server使用的编程语言,与PL/SQL类似,但存在一些关键差异。T-SQL在语法上更接近标准SQL,而PL/SQL则提供了更丰富的过程编程特性。例如,PL/SQL有声明变量、异常处理和包...
- DML操作:INSERT、UPDATE、DELETE语句在PL/SQL中的使用。 - SELECT INTO语句:从查询结果中提取数据到PL/SQL变量。 -游标:使用游标处理多行结果集,进行逐行操作。 3. **异常处理**: - 异常类型:理解预...
1. **基础语法**:PL/SQL的基础包括声明变量、常量、游标、记录类型以及控制流程语句(如IF-THEN-ELSIF,WHILE,FOR循环)。书中会详细介绍如何编写简单的PL/SQL块,包括声明部分、执行部分和异常处理部分。 2. **...
PL/SQL Developer是Oracle数据库当前最流行的开发工具之一,它在ORACLE数据库开发设计方面功能强大,使用方便,但是数据库管理方面一直比较欠缺。 DBATools For PL/SQL Developer 是一款PL/SQL Developer的辅助插件...