---execute procedure revisesff('PLAQ201121090000000002');
CREATE PROCEDURE sffpl3g.revisesff(in_documentno char(22))
define v_02pcount Integer;
define v_02f1count Integer;
define v_maxorder02no Integer;
define v_f1flag Integer;
define v_lastorder02no Integer;
define v_change02no Integer;
define v_ksdm char(8);
define v_policyno char(22);
define v_insurant varchar(120);
define v_assuredcode char(16);
define v_classescode char(6);
define v_currency char(6);
define v_documentno char(22);
define v_kindcode char(3);
define v_order02no Integer;
define v_mainamount decimal(14);
define v_foreamount decimal(14);
define v_departcode char(8);
define v_acceptdepname char(80);
define v_mancode char(11);
define v_acceptopname char(80);
define v_agentcode char(12);
define v_refundname char(20);
define v_procflag char(1);
define v_serialno Integer;
define v_tcol1 char(30);
define v_tcol2 char(30);
define v_sendtime datetime year to second;
define v_sffid Integer;
define v_clausetype char(11);
select count(*) into v_02pcount from sf02p where documentno=in_documentno;
if v_02pcount > 0
then
delete from sf02p where documentno=in_documentno;
end if;
select max(order02no) into v_maxorder02no from sf02 where documentno=in_documentno;
--insert into sf02p
foreach v_sf02Cursor for
select ksdm, policyno, insurant, assuredcode, classescode, currency,documentno, kindcode, order02no,mainamount, foreamount, departcode, acceptdeptname, mancode, acceptopname, agentcode, refundname, procflag, serialno, tcol1, tcol2, sendtime, sffid into v_ksdm, v_policyno, v_insurant, v_assuredcode, v_classescode, v_currency, v_documentno, v_kindcode,v_order02no, v_mainamount, v_foreamount, v_departcode, v_acceptdepname, v_mancode, v_acceptopname, v_agentcode, v_refundname, v_procflag, v_serialno, v_tcol1, v_tcol2, v_sendtime, v_sffid from sf02 where documentno=in_documentno order by order02no
let v_order02no=v_maxorder02no+1;
let v_mainamount=-v_mainamount;
let v_foreamount=-v_foreamount;
if (v_kindcode ='R10' or v_kindcode='R91' or v_kindcode='R81' or v_kindcode='R82' or v_kindcode='P98' or v_kindcode='P94' or v_kindcode='P96' or v_kindcode='R18' or v_kindcode='R19' or v_kindcode='R92'or v_kindcode='R98'or v_kindcode='R96'or v_kindcode='RM0' or v_kindcode='RM1'or v_kindcode='RM2'
or v_kindcode='RJ2'or v_kindcode='RJ3'or v_kindcode='R95'or v_kindcode='RD5'or v_kindcode='RD6'or v_kindcode='RD7'or v_kindcode='RD8'or v_kindcode='RD9'or v_kindcode='RC0'or v_kindcode='RC1'or v_kindcode='RC2'or v_kindcode='RC3'or v_kindcode='RC4'or v_kindcode='RD0'or v_kindcode='RD1'
or v_kindcode='RD2'or v_kindcode='RD3'or v_kindcode='RD4'or v_kindcode='RJ2'or v_kindcode='RJ3'or v_kindcode='R83'or v_kindcode='R84' or (CHAR_LENGTH(v_kindcode)>=2 and substr(v_kindcode, 0, 2)='P0'))
then
let v_procflag = 'A';
else
let v_procflag = 'N';
end if;
insert into sf02p values (v_ksdm, v_policyno, v_insurant, v_assuredcode, v_classescode, v_currency, v_documentno,v_kindcode, v_order02no, v_mainamount, v_foreamount, v_departcode, v_acceptdepname, v_mancode, v_acceptopname, v_agentcode, v_refundname, v_procflag, v_serialno,null,null, v_sendtime, '0' );
let v_maxorder02no=v_maxorder02no+1;
end foreach;
-- insert into sf02pf
select count(*) into v_02f1count from sf02f1 where documentno = in_documentno;
let v_f1flag ='1';
if v_02f1count>0
then
foreach v_sf02f1Cursor for
select ksdm, policyno, classescode, clausetype, kindcode, documentno, order02no, mainamount, foreamount,
tcol1, tcol2, sffid
into v_ksdm, v_policyno, v_classescode, v_clausetype, v_kindcode, v_documentno, v_order02no,
v_mainamount, v_foreamount, v_tcol1, v_tcol2, v_sffid
from sf02f1
where documentno=in_documentno order by order02no
if v_f1flag ='1'
then
select max(order02no) into v_maxorder02no from sf02 where documentno=in_documentno;
let v_lastorder02no=v_order02no;
let v_order02no=v_maxorder02no+1;
let v_change02no=v_order02no;
elif v_order02no <> v_lastorder02no
then
select max(order02no) into v_maxorder02no from sf02pf where documentno=in_documentno;
let v_lastorder02no=v_order02no;
let v_order02no=v_maxorder02no+1;
let v_change02no=v_order02no;
elif v_order02no = v_lastorder02no
then
let v_order02no=v_change02no;
end if;
let v_mainamount=-v_mainamount;
let v_foreamount=-v_foreamount;
insert into sf02pf values(v_ksdm, v_policyno, v_classescode, v_clausetype, v_kindcode,
v_documentno, v_order02no, v_mainamount, v_foreamount,null,null, '0');
let v_f1flag = v_f1flag +1;
end foreach;
end if;
end Procedure;
分享到:
相关推荐
首先,开发Informix存储过程之前,你需要确保有一个正确的数据库实例环境,这通常意味着INFORMIX数据库已经成功安装并运行。同时,你需要一个能够连接到数据库的用户,这个用户至少拥有CONNECT和RESOURCE权限,这样...
本指南主要针对INFORMIX存储过程的编写,涵盖了从环境准备到实际编写过程的基础知识。 首先,进行开发前的环境准备至关重要。确保你有一个正常运行的INFORMIX数据库实例,这意味着数据库服务已经启动并且能够接受...
5. 导出一个存储过程定义:$>dbschema -d your_database_name -f your_procedure_name db.sql 6. 导出数据库中的授权信息:$>dbschema -d your_database_name -p all 7. 导出数据库中的同义词:$>dbschema -d your_...
Informix 服务器实例管理器是一个图形化的管理工具,提供了多种管理功能,例如创建和管理数据库实例、管理数据库用户和权限、查看数据库状态等。 Informix 数据库特点 Informix 数据库具有多种特点,例如: * ...
INFORMIX-ISQL(Interactive SQL)是Informix提供的一个数据库操纵工具,用户可以通过命令行界面执行SQL语句,进行数据查询、插入、更新和删除等操作。ISQL还支持交互式会话,方便开发者进行调试和数据管理。此外,...
每个表空间由一个或多个物理文件组成,这些文件可以分布在不同的磁盘上,以便于提高I/O性能和磁盘空间利用率。 #### 三、创建表空间 创建表空间是管理数据库的重要步骤之一,它决定了数据如何存储以及存储位置。...
Informix 是一个高效且灵活的关系型数据库管理系统,尤其适用于处理大量实时数据,广泛应用于电信、金融、制造等行业。 1. **INFORMIX Dynamic Server 9.21 介绍** - INFORMIX Dynamic Server (IDS) 是 Informix ...
3. **SQL基础**:Informix支持标准的SQL语言,学习如何创建数据库、表,插入、查询、更新和删除数据,以及使用视图、索引、存储过程等高级特性。 4. **事务处理**:理解事务的概念,事务的ACID属性(原子性、一致性...
3. `LibraryConsoleTest`:这可能是一个命令行应用程序,用于测试 Informix .NET 操作的库功能。 4. `Basics`:基础组件或示例代码,可能包含数据库连接和基本操作的实现。 5. `DataLibraryBuilder`:数据库相关的库...
在AIX操作系统上安装...在AIX上安装Informix数据库是一个涉及多个层面的过程,不仅包括硬件资源的规划,还有软件的安装配置,以及后期的管理与维护。了解这些知识点有助于顺利完成数据库的部署并确保其正常运行。
总的来说,Informix SDK 2.9 是一个全面的开发工具集,为开发人员提供了无缝访问Informix数据库的能力。通过它的ODBC支持和丰富的开发资源,无论是新手还是经验丰富的开发者,都能够轻松地构建出高效、可靠的数据...
《Informix使用全书》是一本经典的数据库教材,专为Informix初学者和数据库管理员提供全面的指导。这本书深入浅出地介绍了Informix数据库管理系统的基础知识、安装配置、操作使用、性能优化以及故障排查等核心内容。...
- **物理数据库(PDB)**:在Informix中,每个数据库实例通常包含一个或多个物理数据库,它们是存储实际数据的物理单元。 - **ANSI兼容性**:文档提到了Informix与ANSI标准的兼容性问题,这表明Informix在设计时考虑了...
IDS代表Informix Dynamic Server,它是Informix Online的一个重要更新,引入了多线索机制处理请求,增强了并发处理能力。共享内存可以动态增长,提升了系统的灵活性和效率。 - **Informix Online 8.x (IDS)** ...
存储过程是一种预编译的SQL代码块,它可以存储在数据库服务器上,并通过一个名称来调用,从而提高应用程序的性能并简化复杂的数据库操作。此外,我们还将探讨使用Java语言连接多种数据库的基本方法。 #### 存储过程...
V9.4 版本是 Informix 的一个重要里程碑,它带来了许多性能提升和新特性,使其在企业级数据库解决方案中占据一席之地。 ### 1. Informix 数据库概述 Informix 数据库管理系统(DBMS)主要用于存储、管理和检索数据...
在这个过程中,我们需要注意检查数据库的状态,确保没有处于打开状态的事务。具体步骤如下: 1. **检查打开的事务**:通过执行`oninit –sv`命令来查看当前是否有处于打开状态的事务。 2. **清理事务**:如果发现...