`
king520
  • 浏览: 174578 次
  • 性别: Icon_minigender_1
  • 来自: 合肥
文章分类
社区版块
存档分类
最新评论

oracle存储过程之切割字符串(二)

 
阅读更多

调用及一个普通的查询过程

调用代码(一个function):

 --通过分割,把一个字符串的值获取到最后一个
  function getLastValueBySeperator(p_str       IN VARCHAR2,
                                   p_delimiter IN VARCHAR2) return varchar2 as
    Cursor c is
      select t.* from table(common_tool.fn_split(p_str, p_delimiter)) t;
    r         c%rowtype;
    resultVal varchar(100);
  begin
    open c;
    loop
      fetch c
        into r;
      exit when c%notfound;
      -- dbms_output.put_line(r.column_value);
      resultVal := r.column_value;
    end loop;
  
    return resultVal;
  end;
参考代码:

包头:

create or replace package WCITY2_STATISTIC is

  -- Author  : ADMINISTRATOR
  -- Created : 2012/10/24 9:48:34
  -- Purpose : 
  --定义一个游标类型
  type Ref_Cursor is ref cursor;

  --通过分割,把一个字符串的值获取到最后一个
  function getLastValueBySeperator(p_str       IN VARCHAR2,
                                   p_delimiter IN VARCHAR2) return varchar2;

  --page统计分析子系统调用该接口查看页面信息,
  --页面信息包括页面编码、页面名称、页面归属地等,
  --其中页面编码字段要求唯一且不能为空。
  procedure sp_pager_stats;

  --访问信息
  procedure sp_uservisit_stat(c_uservisit out Ref_Cursor);

  --下载信息
  procedure sp_download_stat(c_download out Ref_Cursor);

  --资源信息
  procedure sp_resource_stat(c_resource out Ref_Cursor);

  --查询订购信息
  procedure sp_order_stat(c_order out Ref_Cursor);

  --查询应用信息
  procedure sp_application_stat(c_application out Ref_Cursor);
  
  --查询:服务订阅信息
  procedure sp_bind_stat(c_bind out Ref_Cursor);
  
  --查询产品信息
  procedure sp_product_stat(c_product out Ref_Cursor);

end WCITY2_STATISTIC;
包体:
create or replace package body WCITY2_STATISTIC is

  --通过分割,把一个字符串的值获取到最后一个
  function getLastValueBySeperator(p_str       IN VARCHAR2,
                                   p_delimiter IN VARCHAR2) return varchar2 as
    Cursor c is
      select t.* from table(common_tool.fn_split(p_str, p_delimiter)) t;
    r         c%rowtype;
    resultVal varchar(100);
  begin
    open c;
    loop
      fetch c
        into r;
      exit when c%notfound;
      -- dbms_output.put_line(r.column_value);
      resultVal := r.column_value;
    end loop;
  
    return resultVal;
  end;

  --页面信息
  procedure sp_pager_stats is
  begin
    -- cur_page as select * from OMS_WIRELESS. TEMPLATE_FILE_WORKING;
    null;
  end sp_pager_stats;

  --访问信息
  procedure sp_uservisit_stat(c_uservisit out Ref_Cursor) as
    --定义游标
    /*
    cursor c_uservisit is 
    select t.city,t.username,t.username as telphone,'' as ip 
    from INTERFACE_WIRELESS.USER_LOGIN_LOG t ;*/
  begin
    open c_uservisit For
      select t.city, t.username, t.username as telphone, '' as ip
        from INTERFACE_WIRELESS.USER_LOGIN_LOG t;
  end;

  --下载信息
  procedure sp_download_stat(c_download out Ref_Cursor) as
  begin
    open c_download for
      select *
        from interface_wireless.log_statistics t
       where t.uri like '%download%';
  end;

  --资源信息
  procedure sp_resource_stat(c_resource out Ref_Cursor) as
  
    --v_resource  oms_wireless.resource_info%rowtype;
    v_id   oms_wireless.resource_info.id%type;
    v_type oms_wireless.resource_info.name%type;
    v_name oms_wireless.resource_info.name%type;
  begin
  
    open c_resource for
      select t.id as id,
             getLastValueBySeperator(t.name, '.') as type,
             t.name
        from oms_wireless.resource_info t;
    /*
    while (c_resource%found) loop
      fetch c_resource
        into v_id, v_type, v_name;
      v_type := 'test';
      dbms_output.put_line('aa:' + v_type);
    end loop;*/
  end;

  --查询订购信息
  procedure sp_order_stat(c_order out Ref_Cursor) as
  begin
    open c_order for
      select pd.order_id, pd.pay_account, pd.pay_account
        from interface_wireless.pay_record pd;
  end;

  --查询应用信息
  procedure sp_application_stat(c_application out Ref_Cursor) as
  begin
    open c_application for
      select t.id, t.app_id as app_type, t.app_name
        from interface_wireless.app_action_relation t;
  end;

  --查询:服务订阅信息
  procedure sp_bind_stat(c_bind out Ref_Cursor) as
  begin
    open c_bind for
      select aar.app_name, aar.app_id, aar.app_name, aar.plat_form
        from interface_wireless.menu_info menu
        left join interface_wireless.app_action_relation aar
        on menu.app_id = aar.app_id;
  end;
  
  --产品信息
  procedure sp_product_stat(c_product out Ref_Cursor) as
    begin
      null;
      end;
end WCITY2_STATISTIC;



分享到:
评论

相关推荐

    plsql分割字符串

    在IT领域,特别是数据库编程与处理中,对字符串进行有效的操作是极其常见的需求之一。PL/SQL(Procedural Language for Oracle)作为Oracle数据库的一种强大工具,提供了丰富的功能来处理字符串,包括分割、连接、...

    Oracle 两个逗号分割的字符串,获取交集、差集(sql实现过程解析)

    在Oracle数据库中,有时我们需要处理以逗号分隔的字符串,并从中提取特定的信息,比如找出交集和差集。在本篇文章中,我们将探讨如何利用SQL实现这一目标,特别是针对两个字段都包含逗号分隔的字符串的情况。 首先...

    如何实现Oracle中字符串分隔.pdf

    在Oracle中,字符串分隔通常涉及到将一个长字符串按照特定的分隔符切割成多个子字符串。Oracle提供了多种函数来实现这一功能,例如`INSTR`、`SUBSTR`和`REGEXP_SUBSTR`等。下面我们将以`INSTR`和`SUBSTR`函数为例,...

    SQL 语句 将一个表中用特殊字符分割的字段转换成多行数据.docx

    接下来,我们创建一个示例表 `db_TestTemp`,其中包含一个字段 `Engineer`,类型为 `NVARCHAR(MAX)`,用于存储需要拆分的字符串。 ```sql CREATE TABLE db_TestTemp ( Engineer NVARCHAR(MAX), BeginDate DATE...

    Oracle字段根据逗号分割查询数据的方法

    需求是表里的某个字段存储的值是以逗号分隔开来的,要求根据分隔的每一个值都能查出来数据,但是不能使用like查询。 数据是这样的: 查询的sql如下: select * from ( select guid, regexp_substr(st_responsible...

    Oracle 插入超4000字节的CLOB字段的处理方法

    1. 创建OracleConnection对象,提供数据库连接字符串,例如`"Data Source=客户端指定连接字符串;User ID=user;Password=mima"`。 2. 打开数据库连接。 3. 编写SQL插入语句,注意使用占位符`:clob`来代表CLOB字段。 4...

    Oracle 自定义split 函数实例详解

    在Oracle数据库中,系统并未内置一个直接用于字符串分割的`SPLIT`函数,但我们可以根据需求自定义一个。本文将详细介绍如何在Oracle中创建一个自定义的`SPLIT`函数,以及如何使用这个函数进行字符串处理。 首先,...

    ArcSDE 矢量数据访问类的设计与实现.pdf

    1. **初始化连接**:创建连接管理器实例,并通过指定的连接字符串建立连接。 2. **执行查询**:利用数据查询类执行SQL查询语句,获取结果集。 3. **处理数据**:遍历结果集中的每一行数据,并根据业务需求进行相应的...

    JAVA上百实例源码以及开源项目源代码

    设定字符串为“张三,你好,我是李四” 产生张三的密钥对(keyPairZhang) 张三生成公钥(publicKeyZhang)并发送给李四,这里发送的是公钥的数组字节 通过网络或磁盘等方式,把公钥编码传送给李四,李四接收到张三编码后...

Global site tag (gtag.js) - Google Analytics