CREATE OR REPLACE PROCEDURE GLU_SP_RECALCULATE_RATE (P OUT VARCHAR2)AS
rateRow REV_SHARE_RATE%rowtype;
cursor rateRows is
SELECT
DISTRIBUTOR_ID,
RETAILER_ID,
RATE,
MODIFIED_DATE ,
GENRE
FROM REV_SHARE_RATE
WHERE
IS_RUN=0;
BEGIN
FOR rateRow in rateRows loop
--Qualcomm,Qualcomm(p)Qualcomm(s)
IF rateRow.Distributor_Id =1 OR rateRow.Distributor_Id =35 OR rateRow.Distributor_Id =61 THEN
UPDATE DAILYDAP SET USD_VALUE = (NUM_DOWNLOADS * DAP_AMOUNT* rateRow.Rate)/(NET_REV/USD_VALUE),-- v_usd_fx,
GBP_VAlUE = (NUM_DOWNLOADS * DAP_AMOUNT* rateRow.Rate)/(NET_REV/GBP_VAlUE),--v_gbp_fx,
NET_REV= NUM_DOWNLOADS * DAP_AMOUNT* rateRow.Rate
WHERE DISTRIB_ID=rateRow.DISTRIBUTOR_ID AND RETAILER_ID=rateRow.Retailer_Id AND NET_REV > 0 AND REPORT_DATE >= rateRow.Modified_Date;
--ATT
ELSIF rateRow.DISTRIBUTOR_ID = 49 THEN
update (select /*+ BYPASS_UJVC */ d.DISTRIB_ID,d.RETAILER_ID,rate.genre,d.USD_VALUE,d.DATA_RAW,d.NET_REV,d.GBP_VAlUE,d.REPORT_DATE from dailydap d
inner join att_raw_daily att on d.ref_id = att.id
inner join rev_share_rate rate on d.distrib_id = rate.DISTRIBUTOR_ID and d.retailer_id = rate.Retailer_Id and att.product_category = rate.genre
)
SET
USD_VALUE = (DATA_RAW * rateRow.Rate)/ (NET_REV/USD_VALUE),--v_usd_fx,
GBP_VAlUE = (DATA_RAW * rateRow.Rate)/(NET_REV/GBP_VAlUE),--v_gbp_fx,
NET_REV= DATA_RAW * rateRow.Rate
where
DISTRIB_ID=rateRow.DISTRIBUTOR_ID AND RETAILER_ID=rateRow.Retailer_Id AND
GENRE=rateRow.GENRE AND NET_REV > 0 AND REPORT_DATE >= rateRow.Modified_Date;
--sprint,nextel...
ELSE
UPDATE DAILYDAP SET USD_VALUE = (DATA_RAW * rateRow.Rate)/ (NET_REV/USD_VALUE),--v_usd_fx,
GBP_VAlUE = (DATA_RAW * rateRow.Rate)/(NET_REV/GBP_VAlUE),--v_gbp_fx,
NET_REV= DATA_RAW * rateRow.Rate
WHERE DISTRIB_ID=rateRow.DISTRIBUTOR_ID AND RETAILER_ID=rateRow.Retailer_Id AND NET_REV > 0 AND REPORT_DATE >= rateRow.Modified_Date;
END IF;
--UPDATE REV_SHARE_RATE SET IS_RUN = 1
UPDATE REV_SHARE_RATE SET IS_RUN=1 WHERE DISTRIBUTOR_ID=rateRow.DISTRIBUTOR_ID AND RETAILER_ID=rateRow.Retailer_Id;
END LOOP;
COMMIT;
P:='OK';
EXCEPTION
WHEN OTHERS THEN
dbms_output.put_line(SQLERRM);
ROLLBACK;
P:= SQLERRM;
END;
分享到:
相关推荐
Java获取Oracle存储过程返回的Cursor,使用odbc6
第一章 oracle存储过程概述 2 1.1 存储过程基本结构(PROCEDURE) 3 1.1.1创建存储过程 3 1.1.2 存储过程删除 5 1.1.3 调用存储过程 5 1.2存储函数(FUNCTIONE) 6 1.2.1 创建存储函数 6 1.2.2 删除存储函数 7 1.3 包...
3.1 oracle 存储过程的基本语法 3.1.1 基本结构 CREATE OR REPLACE PROCEDURE 存储过程名字 ( 参数1 IN NUMBER, 参数2 IN NUMBER ) IS 变量1 INTEGER :=0; 变量2 DATE; BEGIN END 存储过程名字 3.1.2 ...
java调用oracle存储过程返回结果集,Record,cursor参照.pdf
在已有的spring+mybatis 基本操作oracle数据库的基础上,增加了3个调用存储过程的例子:无返回值、返回结果集、返回多个结果,希望对大家能有所帮助
内有三个文件 TESTPACKAGE.txt和CURSOR_TEST2.txt中为oracle建存储过程语句,OracleProcedure.java为java操作存储过程的程序
在分页存储过程中,主要理解了变量的动态赋值和输入输出参数的使用就非常简单了 下面为调用方法: var c_Preccount number; var c_Ppagecount number; var c_cur refcursor; exec proc_SpPag(1,'SELECT * FROM T_...
java调用oracle存储过程返回结果集,Record,cursor.[参考].pdf
Oracle技术_5分钟会用存储过程_存储过程简单实例 包括建表及初始化数据,直接运行就可以用 包含循环、条件、增改查、参数传入、变量赋值、java调用等 http://blog.csdn.net/ooppookid/article/details/41206963
PL/SQL中的过程和函数(通常称为子程序)是PL/SQL块的一种特殊的类型,这种类型的子程序可以以编译的形式存放在数据库中,并为后续的程序块调用。 相同点: 完成特定功能的程序 不同点:是否用return语句返回值。 ...
oracle 存储过程 包括 cursor record 动态sql 临时表等 用于oracle参考学习用
Oracle存储过程语法 Oracle的存储过程语法如下: create procedure 存储过程名称(随便取) is 在这里可以定义常量、变量、游标、复杂数据类型这里可以定义变量、常量 begin 执行部分 end; (2)带参数的存储...
在 Oracle9i 之前,不可能从 Java 存储过程直接返回一个 ResultSet,因为没有定义表单 ResultSet->REF CURSOR 的映射。Oracle9i 增加了此映射,允许从函数返回 ResultSet 或将其作为 OUT 参数传到某个过程。但它仍不...
本文实例讲述了Oracle存储过程游标用法。分享给大家供大家参考,具体如下: 使用游标的5个步骤 1、声明一些变量用于保存select语句返回的指 2、声明游标,并指定select 语句 3、打开游标 4、从游标中获取记录 5、...
不多说了,本文通过两种方法介绍asp.net中调用oracle存储过程的方法,具体内容请看下面代码。 调用oracle存储过程方法一: ORACLE代码 CREATE OR REPLACE PROCEDURE gd_CURSOR(MYCS1 OUT SYS_REFCURSOR
使用CASE语句时在WHEN子句中没有包含必需的条件分支,并且没有包含ELSE语句。 对应ORA-06592错误。 COLLECTION_IS_NULL 给集合元素赋值前,必需初始化集合元素。对应ORA-06531错误。 CURSOR_ALRADY_OPEN 重新打开...
在大型数据库系统中,存储过程和触发器具有很重要的作用。无论是存储过程还是触发器,都是SQL 语句和流程控制语句的集合。 ORACLE代码 CREATE OR REPLACE PROCEDURE gd_CURSOR(MYCS1 OUT SYS_REFCURSOR,MYCS2 OUT ...
第一种情况是返回的游标是某个具体的... 其中USERS就是数据库中一个表。在调用的时候只要声明一个该表的ROWTYPE类型就可以了: SQL-Code: 代码如下: CREATE OR REPLACE PROCEDURE P_TESTB AS VARCURSOR SYS_REFCURSOR;
ibatis调存储过程返回游标,资料整理
用存储过程创建数据表:创建时注意必须添加authid current_user,如果创建的表已存在,存储过程继续执行,但如不不加此关键语句,存储过程将出现异常,这个语句相当于赋权限。例1创建语句如下: 代码如下:create or ...