create or replace procedure SP_CIF_Smary_CustInfo(
o_Cur out Types.CursorType,
o_ret out integer,
o_msg out varchar2,
i_user in integer,
i_ip in varchar2,
i_CustNo in varchar2--客户号
) is
/*
**功能说明:客户基本信息
**创建日期:2015-04-09
************************************************************************
**修改记录
************************************************************************
**修改者 版本号 修改日期 说明
1.0 2015-04-09 创建
*/
begin
o_ret := -99;
o_msg := '未知错误';
open o_Cur for
select FCustNo as 客户号,
FName as 客户姓名,
case Fsex when 1 then '男' when 2 then '女' else '未说明性别' end||','||(select fn_PUB_CalAge(substr(to_char(a.fbirthday,'yyyymmdd'),0,4),FCertType,FCertNo) from dual) as "性别/年龄",
--(select fn_PUB_CalAge(substr(to_char(a.fbirthday,'yyyymmdd'),0,4),FCertType,FCertNo) from dual) as 年龄,
(select b.fname from pub_employee b where b.id = a.FManager) as 客户经理,
1 as 理财顾问,
FMobile as 服务手机,
1 as 服务EMAIL,
1 as 最近联系时间,
1 as 所属群,
1 as 客户特征
from Cif_Persinfo a where FCustNo = i_CustNo;
o_ret := 1;
o_msg := '';
exception
when others then
o_ret := -99;
o_msg := case when o_msg is null then '未知错误' else '在['||o_msg||']处发生异常' end;
end SP_CIF_Smary_CustInfo;
结果
<C0>1</C0>
<客户号>101332602197504126498</客户号>
<客户姓名>郭华鸥</客户姓名>
<性别_年龄>男,41</性别_年龄>
<客户经理>马志清</客户经理>
<理财顾问>1</理财顾问>
<服务手机>13186976222</服务手机>
<服务EMAIL>1</服务EMAIL>
<最近联系时间>1</最近联系时间>
<所属群>1</所属群>
<客户特征>1</客户特征>
create or replace procedure SP_CIF_Smary_Business(
o_Cur out Types.CursorType,
o_ret out integer,
o_msg out varchar2,
i_user in integer,
i_ip in varchar2,
i_CustNo in varchar2--客户号
) is
/*
**功能说明:业务开通情况
**创建人:
**创建日期:2015-04-10
************************************************************************
**修改记录
************************************************************************
**修改者 版本号 修改日期 说明
1.0 2015-04-10 创建
*/
begin
o_ret := -99;
o_msg := '未知错误';
open o_Cur for
select
'网上银行' as 业务,
b.khsj as 开通日期,
(select name from lborganization c where c.orgcode = b.khwdjgh) as 办理机构,
case when C3002 = 1 then '已开通' else '未开通' end as 状态
from dcuser.dc_customerdatah a
left join dcuser.PB_CSTINF_PRO b on a.fcustomer = b.zjlx||b.zjhm
where a.fcustomer = i_CustNo and a.fdate = (select max(fdate) from dcuser.dc_customerdatah)
union all
select
'手机银行' as 业务,
substr(b.khsj,0,8) as 开通日期,
(select name from lborganization c where c.orgcode = b.khwd) as 办理机构,
case when C3003 = 1 then '已开通' else '未开通' end as 状态
from dcuser.dc_customerdatah a
left join (select c.khsj,c.khwd,d.zjlx,d.zjhm from dcuser.PB_CSTINF_PRO d left join dcuser.MB_PB_CSTINF_PRO c on c.dzyxkhnm=d.wykhnm) b
on a.fcustomer = b.zjlx||b.zjhm
where a.fcustomer = i_CustNo and a.fdate = (select max(fdate) from dcuser.dc_customerdatah)
union all
select
'借记卡' as 业务,
to_char(b.kkrq,'yyyymmdd') as 开通日期,
(select name from lborganization c where c.orgcode = b.sljgh) as 办理机构,
case when C3007 = 1 then '已开通' else '未开通' end as 状态
from dcuser.dc_customerdatah a
left join dcuser.BWFMDCIM b on a.fcustomer=b.khh
where a.fcustomer = i_CustNo and a.fdate = (select max(fdate) from dcuser.dc_customerdatah);
o_ret := 1;
o_msg := '';
exception
when others then
o_ret := -99;
o_msg := case when o_msg is null then '未知错误' else '在['||o_msg||']处发生异常' end;
end SP_CIF_Smary_Business;
1 网上银行 未开通
2 手机银行 未开通
3 借记卡 已开通
方法定义
create or replace function fn_PUB_CalAge
(
i_BirthDate varchar2, --出生年份
i_CertType int := null, --证件类型
i_CertNo varchar2 := null --证件号码
) return int as
/*
**功能说明:获取年龄
**创建人:
**创建日期:2014-06-24
**************************************************************************
**修改记录
**************************************************************************
**修改者 版本号 修改日期 说明
**张华斌 2014-06-24 创建
*/
v_Age int;
v_BirthDate varchar2(4);
begin
if(i_CertType = '101') then
if(length(i_CertNo) = 15) then
v_BirthDate := '19' || substr(i_CertNo, 7, 2);
elsif(length(i_CertNo) = 18) then
v_BirthDate := substr(i_CertNo, 7, 4);
end if;
else
v_BirthDate := i_BirthDate;
end if;
if(v_BirthDate is not null) then
v_Age := to_char(sysdate, 'yyyy') - v_BirthDate + 1;
end if;
return v_Age;
end;
分享到:
相关推荐
- 打开游标:使用 `OPEN` 语句打开游标,使游标指向查询结果的第一行。 - 读取数据:使用 `FETCH` 语句从游标中读取一行数据。 - 处理数据:对读取的数据进行处理。 - 关闭游标:使用 `CLOSE` 语句关闭游标。 示例...
Oracle 数据库游标是指在查询返回结果超过一行时,需要使用的显式游标。用户不能使用 select into 语句,而是需要使用游标来处理多行查询结果。在 PL/SQL 中,隐式游标会在查询开始时打开,在查询结束时自动关闭,而...
3. 游标在存储过程中的应用:游标可以用来实现返回多行记录,在存储过程中定义一个游标,并使用 FETCH 语句从游标中提取每一行记录。 4. 游标的优点:游标可以大大提高数据处理的效率,减少磁盘数据交换的次数。 5...
游标定义了一个位置,使我们能够指定结果集中特定行的位置,检索一行或多行,修改数据,以及根据需要对数据更改的敏感性进行控制。 游标分为静态游标和REF游标。静态游标包括隐式游标和显示游标。隐式游标是Oracle...
查询语句,一次只能从数据库中提取一行数据,对于这种形式的查询和 DML 操作,系统都会使用一个隐式游标。但是如果要提取多行数据,就要由程序员定义一个显式游标,并通过与游标有关的语句进行处理。 隐式游标的...
如果没有游标,开发人员必须手动处理每一行数据,这在处理大量数据时会变得非常繁琐。 在Oracle中,游标的使用通常包括四个基本步骤: 1. **定义游标**:通过`cursor`关键字定义一个游标,指定一个查询语句。 ```...
游标循环是指通过循环结构(如`LOOP`、`WHILE`或`FOR`循环)来遍历游标中的每一行数据。这种方式特别适用于处理多行数据的情况。 ##### 1. 使用`LOOP`循环 ```sql DECLARE CURSOR c_employees IS SELECT * FROM ...
可以为游标定义参数。 2. **打开**: 使用`OPEN`语句打开游标,允许访问查询结果。 3. **提取数据**: 使用`FETCH`语句从游标中获取一行数据,并存储在变量中。 4. **循环处理**: 通常使用`LOOP`结构遍历游标中的每...
数据库语言来描述游标就是映射在结果集中一行数据上的位置实体,有了游标,用户就可以访问结果集中的任意一行数据了,将游标放置到某行后,即可对该行数据进行操作,例如提取当前行的数据等。 游标有两种类型:显式...
使用游标可以方便地访问查询结果集中的每一行,这对于处理大量数据是非常有用的。游标主要分为两种类型:显式游标和隐式游标。显式游标是用户通过编程定义的,可以处理多行数据;而隐式游标则是由数据库系统自动处理...
在异常处理中,常见的预定义异常包括`NO_DATA_FOUND`(没有找到数据)、`TOO_MANY_ROWS`(查询结果超过一行)和`ZERO_DIVIDE`(除以零)。此外,`OTHERS`用于捕获所有未被特定异常处理的错误。 通过结合游标和异常...
根据提供的信息,本文将详细介绍如何在Oracle数据库中将某个字段的多行记录转换为一行记录的方法。这种方法在处理大量数据时非常有用,特别是在需要将多个值汇总到一个字段中的场景下。 ### 标题理解:“oracle某个...
##### 3.1 显式游标定义与操作 - **声明游标**:使用`CURSOR`关键字定义游标,并指定对应的SELECT语句。 - **打开游标**:使用`OPEN`命令打开游标。 - **提取数据**:使用`FETCH`命令从游标中提取数据。 - **关闭...
它允许用户逐行地读取和处理查询结果,这对于需要对每一行数据进行特定操作的情况非常有用。游标可以分为显式游标和隐式游标两种类型。 #### 二、创建游标 1. **基本语法格式**: ```sql CURSOR <游标名称> IS ...
- 隐式游标在PL/SQL中使用SELECT或DML语句时自动使用,但只返回一行记录。在本文中不作深入讨论。 3. **动态游标**(参照游标或REF游标): - 动态游标在运行时才能确定查询,或者查询条件依赖于其他游标的返回值...
它允许用户对SELECT语句返回的结果集中的每一行执行相同或不同的操作,同时还能根据游标位置对数据进行删除或更新。游标为程序提供了更精细的控制,提高了代码的灵活性和可读性。 3. 游标分类 游标主要分为隐式游标...
游标允许用户通过编程的方式逐一访问查询结果中的每一行数据,而不是一次性加载所有数据到内存中。这使得游标非常适合处理大量数据的情况。本文将详细介绍Oracle中的游标概念、分类以及如何在PL/SQL中使用游标。 ##...
- **灵活性高**:游标允许开发者对查询结果集中的每一行执行不同的操作,而不是对整个结果集执行统一的操作。 - **操作单一记录**:在关系型数据库管理系统中,数据是以集合形式存在的。游标提供了一种面向单条记录...
2. **显式游标**:显式游标适用于处理返回多行的查询,需要在PL/SQL块的声明部分定义。它的操作流程包括声明、打开、提取行、关闭等步骤。声明游标时,使用DECLARE语句,指定游标名和查询语句。打开游标使用OPEN,...
隐式游标默认处理查询返回的第一行数据,并将其赋值给`INTO`子句中的变量。例如: ```sql DECLARE v_empno SCOTT.EMP.EMPNO%TYPE; v_salary EMP.SALARY%TYPE; BEGIN SELECT empno, salary INTO v_empno, v_...