`
羽风之扬
  • 浏览: 86142 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

PROCEDURE

阅读更多
CREATE OR REPLACE PROCEDURE PRO_RIDDING_CUSTOMER IS
CURSOR CUR_AUDIT_CUSTOMER_INFO IS --通过审核的任务列表
SELECT PLANID,
AREACODE,
CREATEDBY,
CSMONTH,
CREATEDDATE,
NAMESIGN,
STATE,
FLAG,
CREATED_DATE
FROM (SELECT DISTINCT TRF.PLAN_ID PLANID,
(SELECT TPI.AREA_CODE
FROM T_PLAN_INSTITUTE TPI
WHERE TPI.PLAN_ID = TRF.PLAN_ID) AREACODE,
(SELECT TPI.CS_MONTH
FROM T_PLAN_INSTITUTE TPI
WHERE TPI.PLAN_ID = TRF.PLAN_ID) CSMONTH,
TRF.CREATED_BY CREATEDBY,
TO_CHAR(TRF.CREATED_DATE, 'yyyy-mm-dd') CREATEDDATE,
TRF.CREATED_DATE,
TPI.NAME_SIGN NAMESIGN,
TPI.STATE STATE,
TRF.FLAG FLAG
FROM T_CUSTOMER_RIDDING_FORMULA TRF, T_PLAN_INSTITUTE TPI
WHERE TRF.PLAN_ID = TPI.PLAN_ID
AND TRF.DEPART_AUDIT_FLAG = '1'
AND TPI.STATE = '0'
AND TRF.FLAG = '0'
AND TPI.AUDIT_STATE = '1'
AND TPI.VALID_FLAG = 'Y'
AND TRF.VALID_FLAG = 'Y');

CURSOR CUR_FIELD_ID(PLANID VARCHAR2) IS
SELECT TM.FIELD_ID FIELDID
FROM T_CUSTOMER_RIDDING_FORMULA TM
WHERE TM.PLAN_ID = PLANID;

V_CUR_AUDIT_CUSTOMER_INFO CUR_AUDIT_CUSTOMER_INFO%ROWTYPE;
V_CUR_FIELDID             CUR_FIELD_ID%ROWTYPE;
--FORMULA                   T_CUSTOMER_RIDDING_FORMULA%ROWTYPE;    

TYPE CUR_TYPE IS REF CURSOR;
CUR_CUSTOMER   CUR_TYPE;
V_PARTY_ID     VARCHAR2(8);
V_OLD_PCNUMBER VARCHAR2(50);
V_CREATED_BY   VARCHAR2(30);
V_PC_NUM       VARCHAR2(500);
V_AREA_CODE    VARCHAR2(500);
V_ORDER_NUM    VARCHAR2(10);
V_CS_MONTH     VARCHAR2(50);
V_ROLE_ID      NUMBER(8);
SQLSTR         VARCHAR2(4000) := '';
SQL_HEAD       VARCHAR2(1000) := '';
SQL_HEAD_WHERE VARCHAR2(1000) := '';
SQL_TAIL       VARCHAR2(4000) := '';
V_PLAN_ID      VARCHAR2(20);
--V_FIELDID                 VARCHAR2(20);
TIME_FLAG VARCHAR2(5);
--PHONE_FLAG  VARCHAR2(5);
POLICY_FLAG VARCHAR2(5);
V_ERR       VARCHAR2(1000) := '';
V_POI       VARCHAR2(2) := '01';
BEGIN
--上午九点到下午六点期间该程序不能执行
SELECT TO_CHAR(SYSDATE, 'hh24') INTO TIME_FLAG FROM DUAL;
--  IF TO_NUMBER(TIME_FLAG) < 09 OR TO_NUMBER(TIME_FLAG) > 18 THEN

IF CUR_AUDIT_CUSTOMER_INFO%ISOPEN THEN
CLOSE CUR_AUDIT_CUSTOMER_INFO;
END IF;
V_POI := '02';
OPEN CUR_AUDIT_CUSTOMER_INFO;
LOOP
V_POI := '03';
FETCH CUR_AUDIT_CUSTOMER_INFO
INTO V_CUR_AUDIT_CUSTOMER_INFO;
EXIT WHEN CUR_AUDIT_CUSTOMER_INFO%NOTFOUND;
BEGIN
SELECT TRIM(TO_CHAR(RN, '00'))
INTO V_ORDER_NUM
FROM (SELECT ROWNUM RN, PLAN_ID
FROM (SELECT TPI.PLAN_ID
FROM T_PLAN_INSTITUTE TPI
WHERE TPI.CREATED_DATE BETWEEN
TRUNC(V_CUR_AUDIT_CUSTOMER_INFO.CREATED_DATE) AND
TRUNC(V_CUR_AUDIT_CUSTOMER_INFO.CREATED_DATE) + 1
ORDER BY TPI.CREATED_DATE) A) B
WHERE B.PLAN_ID = V_CUR_AUDIT_CUSTOMER_INFO.PLANID;

--PHONE_FLAG     := 'false';
POLICY_FLAG    := 'false';
SQL_HEAD       := '';
SQL_HEAD_WHERE := '';
V_POI          := '04';
V_AREA_CODE    := V_CUR_AUDIT_CUSTOMER_INFO.AREACODE;
--V_ORDER_NUM    := V_CUR_AUDIT_CUSTOMER_INFO.ORDERNUM;
V_CS_MONTH   := V_CUR_AUDIT_CUSTOMER_INFO.CSMONTH;
V_PLAN_ID    := V_CUR_AUDIT_CUSTOMER_INFO.PLANID;
V_PC_NUM     := V_CUR_AUDIT_CUSTOMER_INFO.CREATEDBY || '-' ||
V_CUR_AUDIT_CUSTOMER_INFO.CREATEDDATE || '-' ||
V_ORDER_NUM;
V_CREATED_BY := V_CUR_AUDIT_CUSTOMER_INFO.CREATEDBY;
OPEN CUR_FIELD_ID(V_PLAN_ID);
LOOP
V_POI := '05';
FETCH CUR_FIELD_ID
INTO V_CUR_FIELDID;
EXIT WHEN CUR_FIELD_ID%NOTFOUND;

V_POI := '06';
IF V_CUR_FIELDID.FIELDID = 'ACCIDENT_TIMES' THEN
POLICY_FLAG := 'true';
END IF;

END LOOP;
CLOSE CUR_FIELD_ID;
V_POI := '07';

SQL_HEAD       := 'SELECT DISTINCT A.PARTY_ID PARTYID,A.PCNUMBER FROM T_CAR_INFO C,T_CUSTOMER A';
SQL_HEAD_WHERE := ' WHERE C.VALID_FLAG=''Y'' AND A.PARTY_ID = C.PARTY_ID  AND A.VALID_FLAG=''Y''' ||
' and to_number(A.AREA_CODE) in (' || V_AREA_CODE || ')';

V_POI := '08';

IF V_CS_MONTH IS NOT NULL THEN
V_POI          := '09';
SQL_HEAD_WHERE := SQL_HEAD_WHERE ||
' and to_number(to_char(C.INSUREDUE_DATE,''MM'')) in (' ||
V_CS_MONTH || ')';
END IF;

IF POLICY_FLAG = 'true' THEN
V_POI          := '11';
SQL_HEAD       := SQL_HEAD || ',T_POLICY_INFORMATION  TPI';
SQL_HEAD_WHERE := SQL_HEAD_WHERE ||
' AND C.CAR_ID = TPI.CAR_ID  AND SYSDATE BETWEEN TPI.INSURANCE_BEGIN_TIME AND TPI.INSURANCE_END_TIME AND TPI.POLICY_TYPE=1 ';
END IF;

V_POI := '12';
PRO_RIDDING_CALLLIST(V_PLAN_ID, '1', SQL_TAIL);
IF SQL_TAIL IS NOT NULL THEN
V_POI := '13';
--dbms_output.put_line(SQL_TAIL||'===');
SQLSTR := SQL_HEAD || SQL_HEAD_WHERE || ' ' || SQL_TAIL;

V_POI := '14';
INSERT INTO T_CALLLIST_STRSQL
(SQL_ID, CREATED_DATE, SOURCE_PRO, STRSQL, POSITION)
VALUES
(SEQ_CALLLIST_STRSQL_ID.NEXTVAL,
SYSDATE,
'PRO_RIDDING_CUSTOMER',
SQLSTR,
V_POI);

V_POI := '15';
OPEN CUR_CUSTOMER FOR SQLSTR;
LOOP
V_POI          := '16';
V_PARTY_ID     := NULL;
V_OLD_PCNUMBER := NULL;
FETCH CUR_CUSTOMER
INTO V_PARTY_ID, V_OLD_PCNUMBER;
EXIT WHEN V_PARTY_ID IS NULL;
UPDATE T_CUSTOMER
SET PCNUMBER = V_PC_NUM, LAST_UPDATED_TIME = SYSDATE
WHERE PARTY_ID = V_PARTY_ID;
V_POI := '17';
INSERT INTO T_LIST_PLANSET_BAK
(BAK_ID,
PARTY_ID,
OLD_PC_NUMBER,
NEW_PC_NUMBER,
UPDATED_BY,
CREATED_BY)
VALUES
(SEQ_T_LIST_DISPATCH_BAK.NEXTVAL,
V_PARTY_ID,
V_OLD_PCNUMBER,
V_PC_NUM,
'admin',
'admin');

V_POI := '21';
--修改任务表批次号  
SELECT R.ROLE_ID
INTO V_ROLE_ID
FROM T_ROLE R, T_USER_ROLE UR, T_USER U
WHERE U.UM_CODE = V_CREATED_BY
AND R.ROLE_ID = UR.ROLE_ID
AND UR.USER_ID = U.USER_ID;

IF V_ROLE_ID = 3 THEN

UPDATE T_CUSTOMER_TASK
SET PCNUMBER     = V_PC_NUM,
UPDATED_DATE = SYSDATE,
UPDATED_BY   = 'admin'
WHERE PARTY_ID = V_PARTY_ID
AND ROLL_GROUP = '1'
OR ROLL_GROUP = '';
END IF;

IF V_ROLE_ID != 3 THEN
UPDATE T_CUSTOMER_TASK
SET PCNUMBER     = V_PC_NUM,
UPDATED_DATE = SYSDATE,
UPDATED_BY   = 'admin'
WHERE PARTY_ID = V_PARTY_ID;
END IF;
END LOOP;

CLOSE CUR_CUSTOMER;
V_POI := '18';
COMMIT;
END IF;
V_POI := '19';
UPDATE T_CUSTOMER_RIDDING_FORMULA
SET FLAG = '1'
WHERE PLAN_ID = V_PLAN_ID;
UPDATE T_PLAN_INSTITUTE
SET STATE = '1', PC_NUMBER = V_PC_NUM
WHERE PLAN_ID = V_PLAN_ID;

V_POI := '20';
INSERT INTO T_CUSTOMER_IMPORT_INFO
(ID,
CREATED_BY,
CREATED_DATE,
UPDATED_BY,
UPDATED_DATE,
IMPORT_SIGN,
NAME_SIGN,
AREA_CODE)
VALUES
(SEQ_IMPORT_INFO_ID.NEXTVAL,
V_CUR_AUDIT_CUSTOMER_INFO.CREATEDBY,
SYSDATE,
V_CUR_AUDIT_CUSTOMER_INFO.CREATEDBY,
SYSDATE,
V_PC_NUM,
V_CUR_AUDIT_CUSTOMER_INFO.NAMESIGN,
V_CUR_AUDIT_CUSTOMER_INFO.AREACODE);

COMMIT;

EXCEPTION
WHEN OTHERS THEN
V_ERR := SUBSTR(SQLERRM, 0, 250);
ROLLBACK;
INSERT INTO JOB_LOG
VALUES
('888',
':::::',
'PRO_RIDDING_CUSTOMER',
SYSDATE,
'0',
V_CUR_AUDIT_CUSTOMER_INFO.PLANID || ':V_POI=' || V_POI || ':' ||
V_ERR,
SYSDATE,
'E');
COMMIT;
END;
END LOOP;
CLOSE CUR_AUDIT_CUSTOMER_INFO;

--END IF;

EXCEPTION
WHEN OTHERS THEN
V_ERR := SUBSTR(SQLERRM, 0, 250);
ROLLBACK;
INSERT INTO JOB_LOG
VALUES
('888',
':::::',
'PRO_RIDDING_CUSTOMER',
SYSDATE,
'0',
V_CUR_AUDIT_CUSTOMER_INFO.PLANID || '——V_POI=' || V_POI || '——' ||
V_ERR,
SYSDATE,
'E');
COMMIT;
END PRO_RIDDING_CUSTOMER;
分享到:
评论

相关推荐

    存储过程(Stored Procedure)

    ### 存储过程(Stored Procedure)详解 #### 一、存储过程的概念与作用 存储过程是一种预先编写并编译好的SQL语句集合,通常用于实现特定的数据库操作或逻辑处理。存储过程存储在数据库服务器中,用户可以通过指定...

    mysql存储过程之创建(CREATE PROCEDURE)和调用(CALL)及变量创建(DECLARE)和赋值(SET)操作方法

    创建存储过程的关键在于`CREATE PROCEDURE`语句。以下是一个创建名为`GetAllProducts`的存储过程的例子,它用于从`products`表中选取所有产品: ```sql DELIMITER // CREATE PROCEDURE GetAllProducts() BEGIN ...

    hbase-procedure-1.4.3-API文档-中文版.zip

    赠送jar包:hbase-procedure-1.4.3.jar; 赠送原API文档:hbase-procedure-1.4.3-javadoc.jar; 赠送源代码:hbase-procedure-1.4.3-sources.jar; 赠送Maven依赖信息文件:hbase-procedure-1.4.3.pom; 包含翻译后...

    Procedure Call Standard for the ARM® Architecture

    ### Procedure Call Standard for the ARM® Architecture #### 关于文档 《Procedure Call Standard for the ARM® Architecture》是一份详细描述ARM架构应用程序二进制接口(ABI)中过程调用标准的重要文档。该...

    hbase-procedure-1.1.3-API文档-中英对照版.zip

    赠送jar包:hbase-procedure-1.1.3.jar; 赠送原API文档:hbase-procedure-1.1.3-javadoc.jar; 赠送源代码:hbase-procedure-1.1.3-sources.jar; 赠送Maven依赖信息文件:hbase-procedure-1.1.3.pom; 包含翻译后...

    UL 2809:2020 Environmental Claim Validation Procedure(ECVP) for Recycled Content - 最新完整英文版(21页).pdf

    UL 2809:2020 Environmental Claim Validation Procedure(ECVP) for Recycled Content UL 2809Environmental Claim Validation Procedure (ECVP) for Recycled Content是 Underwriters Laboratories Inc. (UL)发布...

    Procedure Call Standard for the ARM 64-bit Architecture (AArch64)

    ### Procedure Call Standard for the ARM 64-bit Architecture (AArch64) #### 概述 本文档详述了ARM 64位架构(AArch64)中的过程调用标准,该标准是应用二进制接口(ABI)的重要组成部分。文档编号为ARMIHI0055...

    MySQL中创建procedure,function,trigger

    在 MySQL 中,创建存储过程的语法是:`CREATE PROCEDURE proc_Name ([proc_parameter]) routine_body`。这里的参数类型可以是 IN, OUT, INOUT,分别表示输入参数、输出参数和输入输出参数。例如,以下是一个显示 ...

    Delphi procedure and function

    标题“Delphi procedure and function”指向了编程领域中的一个具体概念,即Delphi语言中两种重要的代码组织单元:过程(procedure)和函数(function)。Delphi是一种快速应用程序开发工具,它使用Object Pascal...

    CREATE PROCEDURE DB2ADMIN.doc

    《DB2ADMIN.doc:CREATE PROCEDURE详解及调用方法》 在数据库管理中,存储过程是一种预编译的SQL代码集合,它被保存在数据库中,可以被多次调用,提高了数据处理的效率和应用程序的性能。本文将深入探讨DB2数据库中...

    oracle procedure

    根据提供的文件信息,我们可以从标题、描述以及部分代码中提炼出关于Oracle Procedure的关键知识点。以下是对这些知识点的详细解析: ### Oracle Procedure概述 **Oracle Procedure** 是一种存储过程,在Oracle...

    几个Oracle procedure实例

    下面将详细介绍Oracle procedure的一些关键知识点。 1. **创建存储过程**: 创建存储过程的基本语法如下: ```sql CREATE OR REPLACE PROCEDURE procedure_name (parameter_list) AS declaration_section ...

    Oracle JOB,procedure,cursor 的使用

    本篇文章将深入探讨Oracle中的JOB、PROCEDURE(存储过程)和CURSOR(游标)的使用,这些是Oracle数据库开发中的核心概念。 首先,我们来看Oracle中的JOB。JOB是一种调度工具,允许用户在特定时间或间隔执行数据库...

    访问存储过程(或函数)一般以procedure标签来定义statement。

    ### 访问存储过程(或函数)通过IBATIS中的Procedure标签定义Statement 在IBATIS框架中,访问数据库中的存储过程或者函数是一项常见的需求。本文将深入探讨如何利用IBATIS提供的`procedure`标签来定义这样的操作,...

    实用CREATE PROCEDURE 创建存储过程

    在SQL Server中,`CREATE PROCEDURE` 是一个用于创建存储过程的关键字,它允许开发者定义一组预先编译的SQL语句,以便在未来重复使用。存储过程是数据库中的一个重要概念,它们提高了代码的重用性,简化了复杂的操作...

    oracle 包 procedure

    Oracle数据库中的“包”(Package)和“过程”(Procedure)是高级数据库编程的重要概念,它们在企业级应用开发中广泛使用。理解并熟练掌握这些概念对于任何Oracle数据库开发者来说都至关重要。 首先,我们来解释...

    存储过程通用分页procedure

    ### 存储过程通用分页Procedure详解 #### 标题:存储过程通用分页Procedure 此标题明确指出了本文档的主要内容是关于一种通用的存储过程实现方式,用于数据库中的分页查询。分页是在数据库操作中非常常见的一种...

    ARM THUMB procedure call standard

    ARM THUMB procedure call standard Release A-05 of this specification is the first public release, the ADS-1.0 release. Release B-01 is the ADS-1.1 release. The description of parameter passing has ...

    学习使用存储过程(Stored Procedure)

    ### 学习使用存储过程(Stored Procedure) 在IT领域中,存储过程(Stored Procedure)是一项重要的技术,尤其对于从事Web开发尤其是ASP编程的开发者来说,掌握如何使用存储过程至关重要。存储过程是一种预先编译并...

    用Delphi编写 Sybase ESP (Extended store procedure)

    标题 "用Delphi编写 Sybase ESP (Extended store procedure)" 提示我们关注的是如何在Sybase数据库环境中使用Delphi编程语言创建扩展存储过程(ESP)。Sybase ESP是一种强大的工具,允许开发人员将业务逻辑嵌入到...

Global site tag (gtag.js) - Google Analytics