`
feidi
  • 浏览: 120665 次
社区版块
存档分类
最新评论

[应用]试用oracle的function

    博客分类:
  • db
阅读更多
近日写了一些vew,用到了自定义funciton,都是多表连接查询,也没有优化,留个记录以备后查;
sql 代码
 
  1. -- create view report_service  
  2. create or replace view report_service as  
  3.   select UPPER(trim(to_char(c.aidcategoryid, '0x')) ||  
  4.              trim(to_char(t.aidserviceid, '0xxx'))) ||  
  5.        RPAD(t.servicename, 40) || RPAD(b.id, 2) ||  
  6.        RPAD(decode(y.id, 1, 3, 2, 2, 3, 1) || l.userlevelid, 5) || '1' ||  
  7.        RPAD(' ', 12) Service  
  8.   from co2servicelist  t,  
  9.        co2categorylist c,  
  10.        co2group        g,  
  11.        co2brand        b,  
  12.        co2grouplevel   l,  
  13.        co2grouptype    y  
  14.  where t.categorylistid = c.id  
  15.    and c.groupid = g.id  
  16.    and g.id = b.groupid  
  17.    and g.id = l.groupid  
  18.    and g.grouptypeid = y.id;  
  19.   
  20.   
  21. --create view report_molog  
  22. create or replace view report_molog as  
  23. select Rpad(t.msisdn, 14) || trim(decode(a.id, 1, 0, 3, 2, 4, 1))  ||  
  24.        Rpad(nvl(d.servicelistname, ' '), 40) ||  
  25.        trim(Rpad(to_char(t.creationdate, 'YYYY-MM-DD HH:MI:SS'), 19)) molog  
  26.   from co2transactionlog t, co2transactionlogdetail d, co2actiontype a  
  27.  where t.id = d.transactionlogid  
  28.    and d.actiontypeid = a.id  
  29.    and t.originid = 1  
  30.    and a.id in (1, 3, 4);  
  31.   
  32.   
  33. create or replace view report_mtlog as  
  34.  select Rpad(t.msisdn, 14) || trim(decode(a.id, 1, 0, 3, 2, 4, 1))  || Rpad(nvl(d.servicelistname, ' '), 40) ||  
  35.        trim(Rpad(to_char(t.creationdate, 'YYYY-MM-DD HH:MI:SS'), 19)) ||  
  36.        decode(t.erroroccured, 'N', '0', 'Y', '1') mtlog  
  37.   from co2transactionlog       t,  
  38.        co2transactionlogdetail d,  
  39.        co2actiontype           a,  
  40.        co2origin               b  
  41.  where t.id = d.transactionlogid  
  42.    and d.actiontypeid = a.id  
  43.    and t.directionid = 2  
  44.    and b.id = t.originid  
  45.    and a.id in (1, 3, 4)  ;  
  46.   
  47. -- create view for user  
  48. create or replace view REPORT_USER as  
  49.   select RPAD(t.msisdn, 14) || RPAD(b.id, 2) ||  
  50.        RPAD(decode(p.id, 1, 3, 2, 2, 3, 1) || l.userlevelid, 5) ||  
  51.        RPAD(t.imsi, 16) || RPAD(c.cardproviderid, 2) ||  
  52.        RPAD(c.protocolversionid, 3) || Rpad(c.cardbatchid, 2) ||  
  53.        RPAD(nvl(query_user_menu(c.id),' '), 500) userinfo  
  54.   from co2user       t,  
  55.        co2card       c,  
  56.        co2grouplevel l,  
  57.        co2group      g,  
  58.        co2grouptype  p,  
  59.        co2brand      b  
  60.  where t.cardid = c.id  
  61.    and c.grouplevelid = l.id  
  62.    and l.groupid = g.id  
  63.    and g.id = b.groupid  
  64.    and g.grouptypeid = p.id;  
  65.     
  66. --create function for concat AID string  
  67. create or replace function query_user_menu(id in varchar2) return varchar2 is  
  68.   Result varchar2(500);  
  69.   c_id   varchar2(500);  
  70.   a_id   number;  
  71.   cursor region_cur is  
  72.     select t.servicelistid, t.profilestate, t.isopen  
  73.       from co2currentserviceprofile t  
  74.      where t.cardid = id;  
  75. begin  
  76.   
  77.   for my_cur in region_cur loop  
  78.     select t.aidserviceid, UPPER(trim(to_char(c.aidcategoryid, '0x')))  
  79.       into a_id, c_id  
  80.       from co2servicelist t, co2categorylist c  
  81.      where my_cur.servicelistid = t.id  
  82.        and t.categorylistid = c.id;  
  83.     if c_id is not null and a_id is not null then  
  84.       if my_cur.profilestate = 'Y' then  
  85.         a_id := a_id + 32768;  
  86.       end if;  
  87.       if my_cur.isopen = 'Y' then  
  88.         a_id := a_id + 1024;  
  89.       end if;  
  90.       a_id   := a_id + 16384;  
  91.       Result := CONCAT(Result, c_id);  
  92.       Result := concat(Result, UPPER(trim(to_char(a_id, '0xxx'))));  
  93.       Result := concat(Result, '|');  
  94.     end if;  
  95.   end loop;  
  96.   
  97.   return(Result);  
  98. end query_user_menu;  
  99. /  
  100.         
分享到:
评论

相关推荐

    oracle_function用法

    Oracle 函数用法 Oracle 函数是Oracle数据库中的一种编程对象,它允许用户定义自己的函数,以便在SQL语句中调用。 Oracle 函数的用法可以分为以下几个方面: 函数调用限制 在 Oracle 中,函数可以在 SQL 语句中被...

    oracle在金融行业应用介绍

    ### Oracle在金融行业的应用介绍 #### 一、Oracle在金融行业的背景与意义 在金融行业中,数据处理的速度和准确性对于业务决策至关重要。Oracle作为一种广泛使用的数据库管理系统,在金融领域发挥着重要作用。它...

    oracle function.rar

    oracle function.rar

    Oracle Function Collection

    Decrible the functions using in the Oracle, you could use them to program for PL/SQL

    数据库原理及应用(ORACLE)

    格式 PPT 讲义 第1章 数据库的概念 第2章 实体联系模型 ...第10章 数据库应用程序开发工具-ORACLE Developer 第11章 ORACLE J2EE高级技术与JDeveloper 第12章 ORACLE程序实例——图书管理信息系统

    oracle function 实现七种银行企业帐对帐

    根据提供的信息,我们可以总结出以下有关Oracle Function在实现银行企业账对账中的应用与细节。 ### Oracle Function在银行企业账对账中的应用 #### 1. **Function Get_RevokeRecImport 的实现** 此函数用于处理...

    oracle-function-执行动态sql(包括DML、DLL、DQL、DCL)

    oracle-function-执行动态sql(包括DML、DLL、DQL、DCL)

    oracle实用的sqlplusw应用程序

    oracle实用的sqlplusw应用程序 oracle实用的sqlplusw应用程序 oracle实用的sqlplusw应用程序 oracle实用的sqlplusw应用程序 oracle实用的sqlplusw应用程序 oracle实用的sqlplusw应用程序 oracle实用的sqlplusw应用...

    Oracle 数据库应用

    Oracle 数据库应用Oracle 数据库应用Oracle 数据库应用Oracle 数据库应用Oracle 数据库应用Oracle 数据库应用Oracle 数据库应用Oracle 数据库应用

    Oracle 11gR2创建PASSWORD_VERIFY_FUNCTION对应密码复杂度验证函数步骤.doc

    这可以通过创建和应用`PASSWORD_VERIFY_FUNCTION`来实现。`PASSWORD_VERIFY_FUNCTION`允许我们自定义一个PL/SQL函数,该函数将在用户尝试更改密码时进行验证,确保新密码满足预设的复杂度规则。以下是在Oracle 11g ...

    Oracle数据库系统应用与开发

    Oracle数据库系统是全球广泛使用的大型关系型数据库管理系统之一,它在企业级数据管理和应用程序开发中扮演着核心角色。本资源“Oracle数据库系统应用与开发”深入探讨了Oracle数据库的使用和开发技术,特别关注...

    oracle应用开发指南

    Oracle应用开发指南是一份权威的Oracle官方文档,它为Oracle应用的开发人员提供了详尽的开发指导和参考。这份指南不仅覆盖了Oracle应用程序的开发过程,也介绍了Oracle的技术背景和开发环境。通过这份指南,开发者...

    oracle ebs系统多应用节点安装手册

    "Oracle EBS 多应用节点安装手册" Oracle EBS 系统多应用节点安装手册是指在单个数据库节点和多个应用节点上安装 Oracle E-Business Suite(EBS)Release 12.1 的详细指南。本手册旨在指导用户完成 EBS 系统的安装...

    Oracle数据库应用

    Oracle数据库应用Oracle数据库应用Oracle数据库应用Oracle数据库应用Oracle数据库应用Oracle数据库应用Oracle数据库应用

    oracle-function-执行动态sql

    execute immediate str_sql into tabtcn; --动态执行DDL语句

    Oracle SQL 內置函數大全 Oracle SQL function.ppt

    简绍oracle的内置函数,方便查看

    基于Oracle_高级队列技术实现应用程序间的通信

    ### 基于Oracle高级队列技术实现应用程序间的通信 #### 一、引言 近年来,随着信息技术的迅速发展和广泛应用,企业的信息化建设也取得了显著的进步。为了提高工作效率和服务质量,许多企业开始重视不同部门之间的...

    Oracle_11G_数据库应用简明教程PPT

    Oracle 11g是一款强大的关系型数据库管理系统,由甲骨文公司开发,广泛应用于企业级数据存储、管理和分析。本教程“Oracle_11G_数据库应用简明教程PPT”将带你深入理解Oracle 11g的核心概念、功能及应用。 首先,...

    Oracle 11g数据库应用简明教程

    Oracle 11g数据库是Oracle公司推出的一款企业级关系型数据库管理系统,广泛应用于大型数据存储、数据处理和数据分析等场景。本教程旨在提供一个Oracle 11g数据库应用的简明指南,帮助初学者快速掌握数据库的基础操作...

Global site tag (gtag.js) - Google Analytics