`

游标定义,多行,一行

 
阅读更多
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;
分享到:
评论

相关推荐

    游标分类汇总行转列oracleplsql

    - 打开游标:使用 `OPEN` 语句打开游标,使游标指向查询结果的第一行。 - 读取数据:使用 `FETCH` 语句从游标中读取一行数据。 - 处理数据:对读取的数据进行处理。 - 关闭游标:使用 `CLOSE` 语句关闭游标。 示例...

    快速掌握Oracle数据库游标的使用方法

    Oracle 数据库游标是指在查询返回结果超过一行时,需要使用的显式游标。用户不能使用 select into 语句,而是需要使用游标来处理多行查询结果。在 PL/SQL 中,隐式游标会在查询开始时打开,在查询结束时自动关闭,而...

    对游标的理解和应用

    3. 游标在存储过程中的应用:游标可以用来实现返回多行记录,在存储过程中定义一个游标,并使用 FETCH 语句从游标中提取每一行记录。 4. 游标的优点:游标可以大大提高数据处理的效率,减少磁盘数据交换的次数。 5...

    oracle游标介绍[定义].pdf

    游标定义了一个位置,使我们能够指定结果集中特定行的位置,检索一行或多行,修改数据,以及根据需要对数据更改的敏感性进行控制。 游标分为静态游标和REF游标。静态游标包括隐式游标和显示游标。隐式游标是Oracle...

    游标和异常处理 游标和异常处理

    查询语句,一次只能从数据库中提取一行数据,对于这种形式的查询和 DML 操作,系统都会使用一个隐式游标。但是如果要提取多行数据,就要由程序员定义一个显式游标,并通过与游标有关的语句进行处理。 隐式游标的...

    游标教程光标的定义与使用

    如果没有游标,开发人员必须手动处理每一行数据,这在处理大量数据时会变得非常繁琐。 在Oracle中,游标的使用通常包括四个基本步骤: 1. **定义游标**:通过`cursor`关键字定义一个游标,指定一个查询语句。 ```...

    oracle 隐式游标,显示游标,游标循环

    游标循环是指通过循环结构(如`LOOP`、`WHILE`或`FOR`循环)来遍历游标中的每一行数据。这种方式特别适用于处理多行数据的情况。 ##### 1. 使用`LOOP`循环 ```sql DECLARE CURSOR c_employees IS SELECT * FROM ...

    ORACLE 游标学习笔记

    可以为游标定义参数。 2. **打开**: 使用`OPEN`语句打开游标,允许访问查询结果。 3. **提取数据**: 使用`FETCH`语句从游标中获取一行数据,并存储在变量中。 4. **循环处理**: 通常使用`LOOP`结构遍历游标中的每...

    解析数据库中游标的使用方法

    数据库语言来描述游标就是映射在结果集中一行数据上的位置实体,有了游标,用户就可以访问结果集中的任意一行数据了,将游标放置到某行后,即可对该行数据进行操作,例如提取当前行的数据等。 游标有两种类型:显式...

    oracle数据库的游标

    使用游标可以方便地访问查询结果集中的每一行,这对于处理大量数据是非常有用的。游标主要分为两种类型:显式游标和隐式游标。显式游标是用户通过编程定义的,可以处理多行数据;而隐式游标则是由数据库系统自动处理...

    游标和异常处理 oracle.docx

    在异常处理中,常见的预定义异常包括`NO_DATA_FOUND`(没有找到数据)、`TOO_MANY_ROWS`(查询结果超过一行)和`ZERO_DIVIDE`(除以零)。此外,`OTHERS`用于捕获所有未被特定异常处理的错误。 通过结合游标和异常...

    oracle某个字段多行记录转化为一行

    根据提供的信息,本文将详细介绍如何在Oracle数据库中将某个字段的多行记录转换为一行记录的方法。这种方法在处理大量数据时非常有用,特别是在需要将多个值汇总到一个字段中的场景下。 ### 标题理解:“oracle某个...

    oracle游标和异常处理

    ##### 3.1 显式游标定义与操作 - **声明游标**:使用`CURSOR`关键字定义游标,并指定对应的SELECT语句。 - **打开游标**:使用`OPEN`命令打开游标。 - **提取数据**:使用`FETCH`命令从游标中提取数据。 - **关闭...

    oracle游标使用及实例

    它允许用户逐行地读取和处理查询结果,这对于需要对每一行数据进行特定操作的情况非常有用。游标可以分为显式游标和隐式游标两种类型。 #### 二、创建游标 1. **基本语法格式**: ```sql CURSOR &lt;游标名称&gt; IS ...

    ORACLE显式游标和动态游标的使用.pdf

    - 隐式游标在PL/SQL中使用SELECT或DML语句时自动使用,但只返回一行记录。在本文中不作深入讨论。 3. **动态游标**(参照游标或REF游标): - 动态游标在运行时才能确定查询,或者查询条件依赖于其他游标的返回值...

    Oracle之认识游标.pdf

    它允许用户对SELECT语句返回的结果集中的每一行执行相同或不同的操作,同时还能根据游标位置对数据进行删除或更新。游标为程序提供了更精细的控制,提高了代码的灵活性和可读性。 3. 游标分类 游标主要分为隐式游标...

    Oracle游标大全

    游标允许用户通过编程的方式逐一访问查询结果中的每一行数据,而不是一次性加载所有数据到内存中。这使得游标非常适合处理大量数据的情况。本文将详细介绍Oracle中的游标概念、分类以及如何在PL/SQL中使用游标。 ##...

    Mysql中sql语句游标详解

    - **灵活性高**:游标允许开发者对查询结果集中的每一行执行不同的操作,而不是对整个结果集执行统一的操作。 - **操作单一记录**:在关系型数据库管理系统中,数据是以集合形式存在的。游标提供了一种面向单条记录...

    北大青鸟Oracle游标

    2. **显式游标**:显式游标适用于处理返回多行的查询,需要在PL/SQL块的声明部分定义。它的操作流程包括声明、打开、提取行、关闭等步骤。声明游标时,使用DECLARE语句,指定游标名和查询语句。打开游标使用OPEN,...

    Oracle数据库游标使用大全

    隐式游标默认处理查询返回的第一行数据,并将其赋值给`INTO`子句中的变量。例如: ```sql DECLARE v_empno SCOTT.EMP.EMPNO%TYPE; v_salary EMP.SALARY%TYPE; BEGIN SELECT empno, salary INTO v_empno, v_...

Global site tag (gtag.js) - Google Analytics