`
klts
  • 浏览: 39135 次
  • 性别: 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_function

    Oracle function 例子 in out 例子

    hibernate query调用oracle存储过程

    使用hibernate的query调用oracle的存储过程/function,包含例子,源码以及数据库文件

    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常用命令大全.txt

    SQL&gt;select object_name,status from user_objects where object_type='FUNCTION'; SQL&gt;select object_name,status from user_objects where object_type='PROCEDURE'; 查看函数和过程的源代码 SQL&gt;select text...

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

    Mysql 甲骨文 是个开源的数据库server,可运行在多种平台, 特点是响应速度特别快,主要面向中小企业 中小型企业 PostgreSQL 号称“世界上最先进的开源数据库“,可以运行在多种平台下,是tb级数据库,而且性能也很...

    Oracle8i_9i数据库基础

    第一部分 Oracle SQL*PLUS基础 23 第一章 Oracle数据库基础 23 §1.1 理解关系数据库系统(RDBMS) 23 §1.1.1 关系模型 23 §1.1.2 Codd十二法则 24 §1.2 关系数据库系统(RDBMS)的组成 24 §1.2.1 RDBMS 内核 24...

    Oracle_Data_Integrator应用指南

    2. 完整的简单例子(资料库、体系结构、项目、模型、接口、包、方案) 11 2.1. ODI理解之2 11 2.2. 环境准备 12 2.3. 创建资料库 13 2.4. 创建物理体系结构 17 2.5. 创建逻辑体系结构 20 2.6. 创建项目 20 2.7. 创建...

    JAVA ORACLE数据库资料讲解

    业务模型是用“职能范围(Function Area)—业务过程(Process)—业务活动(Activity)”这样的层次结构描述的。 2.1.1 职能范围 职能范围指的是一个企业中的主要业务领域,比如工程、市场、生产、科研、销售等。下面举出...

    Oracle事例

    &lt;1&gt;.creating function-based indexes sql&gt; create index summit.item_quantity on summit.item(quantity-quantity_shipped); &lt;2&gt;.create a B-tree index sql&gt; create [unique] index index_name on table_...

    orcale常用命令

    SQL&gt;select object_name,status from user_objects where object_type='FUNCTION'; SQL&gt;select object_name,status from user_objects where object_type='PROCEDURE'; 查看函数和过程的源代码 SQL&gt;select text...

    Delphi最新三层源码

    主要功能就是把数据存储隐藏起来,调用SQL, ORACLE,之类。我主要是用它调用数据库工厂创建。 大致看一下代码吧。 //----------//1.工厂基类(SQLServer工厂类)//----------unit ConnDBFactory_SQLServer;...

    shell脚本返回值问题的解决

    如果学习过高级语言比如java和c语言等,此时你要是获取一个函数的返回值,直接在函数里面写上return即可,然后在函数执行时将...比如下面这个例子: #!/bin/bash function in_path(){ cmd=$1 path=$2 oldIFS=$IFS

    PHP基础教程 是一个比较有价值的PHP新手教程!

    你可以利用PHP连接包括Oracle,MS-Access,Mysql在内的大部分数据库。你可以在苍蝇上画图,编写程序下载或者显示e-mail。你甚至可以完成网络相关的功能。最好的是,你可以选择你的PHP安装版本需要哪些功能。引用...

    typeorm-adapter:用于Casbin的TypeORM适配器

    Oracle WebSQL MongoDB的 您可以在TypeORM网站或其他地方找到其他第三方支持的数据库。 安装 npm install typeorm-adapter 简单的例子 import { newEnforcer } from 'casbin' ; import TypeORMAdapter from '...

    基于EXT SSI的简单树实现

    1 安装oracle,这个例子只做了oracle版本,如果需要,后期可以加上mysql版本,呵呵。 2 运行建用户及表空间的脚本。db_desc_ddl.sql. 3 执行初始化数据脚本。db_desc_dml.sql 4 导入工程,部署,打开浏览器输入 ...

    PHP开发实战1200例(第1卷).(清华出版.潘凯华.刘中华).part1

     《PHP开发实战1200例》分为I、II两卷共计1200个例子,包括了开发中各个方面最常用的实例,是目前市场上实例最全面的开发类图书;书中实例来源于多位工程师的多年积累,具有很强的实用性。 本书是第I卷,以开发...

    PHP开发实战1200例(第1卷).(清华出版.潘凯华.刘中华).part2

     《PHP开发实战1200例》分为I、II两卷共计1200个例子,包括了开发中各个方面最常用的实例,是目前市场上实例最全面的开发类图书;书中实例来源于多位工程师的多年积累,具有很强的实用性。 本书是第I卷,以开发...

    Spring 2.0 开发参考手册

    11.4.5. SqlFunction类 12. 使用ORM工具进行数据访问 12.1. 简介 12.2. Hibernate 12.2.1. 资源管理 12.2.2. 在Spring的application context中创建 SessionFactory 12.2.3. HibernateTemplate 12.2.4. 不使用...

    Spring-Reference_zh_CN(Spring中文参考手册)

    11.4.5. SqlFunction类 12. 使用ORM工具进行数据访问 12.1. 简介 12.2. Hibernate 12.2.1. 资源管理 12.2.2. 在Spring的application context中创建 SessionFactory 12.2.3. HibernateTemplate 12.2.4. 不使用回调...

    spring chm文档

    11.4.5. SqlFunction类 12. 使用ORM工具进行数据访问 12.1. 简介 12.2. Hibernate 12.2.1. 资源管理 12.2.2. 在Spring的application context中创建 SessionFactory 12.2.3. HibernateTemplate 12.2.4. 不使用...

Global site tag (gtag.js) - Google Analytics