`
klts
  • 浏览: 41329 次
  • 性别: Icon_minigender_2
  • 来自: 成都
社区版块
存档分类
最新评论
  • klts: 我一直用的jdk1.6.0_13,感觉还可以
    JDK
  • wuyulunbi: 现在jdk什么版本的稳定
    JDK

oracle function小例子

 
阅读更多

今天写了个function,学习了一些orcale的语法,下面是修改后的简洁代码,以便以后查看。

CREATE OR REPLACE TYPE typetmp AS TABLE OF VARCHAR2(4000);


CREATE OR REPLACE FUNCTION functiontmp(l_orders IN VARCHAR2)
RETURN typetmp
IS
  l_typetmp typetmp:= typetmp(); --初始化typetmp,后面通过数组的方式使用
  noLen INTEGER := 8;

  l_order VARCHAR2(3000);
  l_orderIds VARCHAR2(3000);     --input data
  l_strs VARCHAR2(3000);         --DNCContactNo Strings
  l_str VARCHAR2(3000);          --each DNCContactNo String
  l_orderId VARCHAR2(3000);      --each order
  
  ---------------------------declare cursor start-------------------------------
  CURSOR t_cursor IS
   SELECT coltmp  
        FROM tabletmp
        WHERE datetmp >= trunc(sysdate-1) and datetmp < trunc(sysdate); 
  ---------------------------declare cursor end---------------------------------
        
BEGIN

  ---------------------------get orderIDs start---------------------------------
  使用cusor将查询结果集放入字符串l_orderIds中,两次使用fetch into
  ------------------------------------------------------------------------------
  IF l_orders IS NULL THEN
    BEGIN
     OPEN t_cursor; 
       FETCH t_cursor INTO l_order;
       
       WHILE t_cursor%FOUND LOOP--judge whether get last record
         IF l_orderIds IS NULL THEN
           l_orderIds := l_order||',';
         ELSE
           l_orderIds := l_order||','||l_orderIds||',';
         END IF;
         FETCH t_cursor INTO l_order;--loop cursor for get each record
       END LOOP;
       
      EXCEPTION
      WHEN OTHERS THEN
        CLOSE t_cursor;
      
      IF t_cursor%isopen THEN        
        CLOSE t_cursor;    
      END IF;
    END;
  END IF;
  
  --------------------------get orderIDs end------------------------------------
  
  IF l_orders<>'' OR l_orders IS NOT NULL THEN
    l_orderIds := l_orders||',';
  END IF;
  
  
  WHILE l_orderIds IS NOT NULL LOOP
    l_orderId := SUBSTR(l_orderIds, 1, INSTR(l_orderIds, ',')-1);
    --instr()函数获取字符','在l_orderIds中的位置,返回位置号


    ------------------------get orderid value start------------------------------
	采用"select into from"为指定字符插入值,只能接受一个结果,不能接受结果集
	查询table判断是否有记录插入l_strs,如果没有结果,则赋值为null
	------------------------------------------------------------------------
    IF l_orderId IS NOT NULL THEN
      BEGIN
        SELECT b.coltmp1 INTO l_strs FROM tabletmp b where col=l_orderId;
      EXCEPTION
      WHEN   no_data_found   THEN
        l_strs := NULL;
      END;
    END IF;
    ------------------------get orderid value end------------------------------


    WHILE l_strs IS NOT NULL LOOP
      l_str := substr(l_strs, 1, noLen);

      l_typetmp.EXTEND(1);
      l_typetmp(l_typetmp.COUNT) := l_str;--往新类型创建的便利l_typetmp里放入值

      l_strs := SUBSTR(l_strs, noLen+2);
      l_str := NULL;
    END LOOP;
	
      l_strs := NULL;

      l_orderIds := SUBSTR(l_orderIds, length(l_orderId)+2);

  END LOOP;

  RETURN l_typetmp;
END;




 

分享到:
评论

相关推荐

    一个简单的oracle过程被使用的例子,包含架包

    在这个例子中,我们将深入探讨Oracle过程的使用,以及如何通过“架包”(可能指的是Oracle的包,即PL/SQL包)来组织和复用这些过程。 首先,让我们理解什么是Oracle过程。在Oracle数据库中,过程是一组按顺序执行的...

    VB 调用 Oracle 函数返回数据集的例子

    这个例子展示了如何使用VB来调用Oracle存储过程,该过程返回一个游标类型(REF CURSOR),进而填充ADODB.Recordset对象。 首先,让我们看下Oracle端的PL/SQL代码: ```sql CREATE OR REPLACE PACKAGE "PKG_TEST" ...

    Oracle_function

    在IT领域,尤其是在数据库管理与开发中,Oracle Function扮演着至关重要的角色。它们是数据库编程中的核心组件,允许用户创建可重用的代码块来执行特定任务并返回结果。本文将深入探讨Oracle自定义函数的概念、语法...

    oracle ranking function.doc

    本文将详细介绍其中的评级函数,包括RANK()、DENSE_RANK()、PERCENT_RANK()、CUME_DIST()以及NTILE(),并以实际例子解释它们的应用。 1. RANK() 函数: RANK() 函数用于计算数据项在分组中的排名。当有多个记录...

    oracle经典例子

    根据提供的文件信息,我们可以归纳出以下几个关键的知识点: ### 1. Oracle自定义函数示例:随机数生成 #### 函数定义与实现 ...通过理解和应用这些例子,可以帮助开发者更好地掌握Oracle数据库的相关技术和功能。

    oracle workflow 实例详解

    第3个例子:Lookup Types和分支处理Function Lookup Types 是一种常见的工作流特性,用于在工作流中执行查找操作。在这个示例中,我们将学习如何使用 Lookup Types 和分支处理函数来执行查找操作。 第4个例子:...

    oracle中修改用户密码复杂度的具体例子及操作过程(unix中)

    Oracle 中修改用户密码复杂度的具体例子及操作过程(Unix 中) Oracle 数据库安全是企业信息安全的关键组件之一。在 Unix 环境中,修改 Oracle 用户密码复杂度是确保数据库安全的重要步骤。本文将详细介绍如何修改 ...

    Oracle实现MD5加密

    以下是一个创建自定义MD5加密包的例子: ```sql CREATE OR REPLACE PACKAGE Test_MD5 AS FUNCTION FN_GetMD5(P_Str_In VARCHAR2) RETURN VARCHAR2; FUNCTION FN_CheckUser(P_UserName_In VARCHAR2, P_Password_In...

    Oracle Solaris 11.1 man pages section3:Extended Library Function

    《Oracle Solaris 11.1 man pages section3:Extended Library Function》是Oracle公司为Solaris 11.1操作系统提供的扩展库函数手册,包含了从Volume 1到Volume 466的详细文档。这份文档集是Oracle及其关联公司在2012...

    ORACLE NO_DATA_FOUND的三种处理办法

    在这个例子中,如果游标没有找到任何数据,程序将执行`WHEN NO_DATA_FOUND THEN`后面的代码,而不是抛出错误。 **方法二:使用%NOTFOUND属性** 在`FETCH`语句之后,你可以检查游标的`%NOTFOUND`属性来确定是否已经...

    oracle-workflow实力详解

    ##### 2.5 第6个例子:Document、Forms、Function Result、隐藏标准按钮 此示例展示了如何在流程中使用文档、表单以及函数返回结果,并解释了如何自定义用户界面以提高用户体验。 ##### 2.6 第7个例子:常用的 # ...

    Oracle自学(学习)材料 (共18章 偏理论一点)

    3 管理 Oracle 实例 目标 3-2 初始化参数文件 3-3 PFILE initSID.ora 3-5 PFILE 例子 3-6 SPFILE spfileSID.ora 3-7 创建一个 SPFILE 3-8 SPFILE 例子 3-9 Oracle 管理文件 3-10 Oracle 管理文件例子 3-11 打开一个...

    Oracle Workflow实例详解

    ##### 2.5 第6个例子:Document、Forms、Function Result、隐藏标准按钮 在处理文档和其他形式的数据时,可以利用 Document 和 Forms 特性来创建和管理数据表单。Function Result 则用于返回函数调用的结果,这对于...

    Oracle时间区间段合并.pdf

    这可以通过窗口函数(Window Function)配合分组来实现。在提供的SQL语句中,主要使用了`SUM()`窗口函数和`CASE`表达式来判断当前区间段是否与前一个区间段重叠。 1. `CASE`表达式: 该表达式检查当前行的开始时间...

    hibernate 调用oracle函数

    CREATE OR REPLACE FUNCTION ADD_NUMBERS(p_num1 NUMBER, p_num2 NUMBER) RETURN NUMBER AS result NUMBER; BEGIN result := p_num1 + p_num2; RETURN result; END ADD_NUMBERS; ``` 2. **配置Hibernate**...

    oracle的存储过程如何返回结果集

    本文将详细介绍Oracle存储过程如何返回结果集的方法,并通过具体的例子进行说明。 #### 二、存储过程返回结果集的原理 在Oracle中,存储过程可以通过引用游标(Ref Cursor)来返回结果集。Ref Cursor是一种特殊...

    Oracle行列转换

    在这个例子中,`aggregation_function`通常是SUM、COUNT等,`column_to_aggregate`是要聚合的列,`pivot_column`是你要转换为列的原始列,`list_of_values`是`pivot_column`可能出现的值列表。 其次,`UNPIVOT`操作...

    oracle odi 入门

    Oracle ODI(Oracle Data Integrator)是一款由Oracle公司推出的高效数据集成工具,它是基于Sunopsis公司Active Integration Platform的产品,自2006年10月被Oracle收购后,整合进了Oracle Fusion Middleware产品线...

Global site tag (gtag.js) - Google Analytics