`

存储过程常用技巧4

阅读更多

上面的两种方式都是非常的复杂,如果仅仅是需要返回一个结果集,那就完全可以使用函数来实现了。
Java代码
create or replace package procpkg is  
   type refcursor is ref cursor;  
   procedure procrefcursor(p varchar2, p_ref_postypeList  out refcursor);  
   function procpostype(p varchar2) return PosTypeTable;   
end procpkg;  
 
create or replace package body procpkg is  
  procedure procrefcursor(p varchar2, p_ref_postypeList out  refcursor)  
  is  
    v_posTypeList PosTypeTable;  
  begin  
    v_posTypeList :=PosTypeTable();--初始化嵌套表  
    v_posTypeList.extend;  
    v_posTypeList(1) := PosType('A001','客户资料变更');  
    v_posTypeList.extend;  
    v_posTypeList(2) := PosType('A002','团体资料变更');  
    v_posTypeList.extend;  
    v_posTypeList(3) := PosType('A003','受益人变更');  
    v_posTypeList.extend;  
    v_posTypeList(4) := PosType('A004','续期交费方式变更');  
    open p_ref_postypeList for  select * from table(cast (v_posTypeList as PosTypeTable));  
  end;  
 
  function procpostype(p varchar2) return PosTypeTable  
  as  
   v_posTypeList PosTypeTable;  
  begin  
      v_posTypeList :=PosTypeTable();--初始化嵌套表  
    v_posTypeList.extend;  
    v_posTypeList(1) := PosType('A001','客户资料变更');  
    v_posTypeList.extend;  
    v_posTypeList(2) := PosType('A002','团体资料变更');  
    v_posTypeList.extend;  
    v_posTypeList(3) := PosType('A003','受益人变更');  
    v_posTypeList.extend;  
    v_posTypeList(4) := PosType('A004','续期交费方式变更');  
    return  v_posTypeList;  
  end;  
end procpkg; 

create or replace package procpkg is
   type refcursor is ref cursor;
   procedure procrefcursor(p varchar2, p_ref_postypeList  out refcursor);
   function procpostype(p varchar2) return PosTypeTable;
end procpkg;

create or replace package body procpkg is
  procedure procrefcursor(p varchar2, p_ref_postypeList out  refcursor)
  is
    v_posTypeList PosTypeTable;
  begin
    v_posTypeList :=PosTypeTable();--初始化嵌套表
    v_posTypeList.extend;
    v_posTypeList(1) := PosType('A001','客户资料变更');
    v_posTypeList.extend;
    v_posTypeList(2) := PosType('A002','团体资料变更');
    v_posTypeList.extend;
    v_posTypeList(3) := PosType('A003','受益人变更');
    v_posTypeList.extend;
    v_posTypeList(4) := PosType('A004','续期交费方式变更');
    open p_ref_postypeList for  select * from table(cast (v_posTypeList as PosTypeTable));
  end;

  function procpostype(p varchar2) return PosTypeTable
  as
   v_posTypeList PosTypeTable;
  begin
      v_posTypeList :=PosTypeTable();--初始化嵌套表
    v_posTypeList.extend;
    v_posTypeList(1) := PosType('A001','客户资料变更');
    v_posTypeList.extend;
    v_posTypeList(2) := PosType('A002','团体资料变更');
    v_posTypeList.extend;
    v_posTypeList(3) := PosType('A003','受益人变更');
    v_posTypeList.extend;
    v_posTypeList(4) := PosType('A004','续期交费方式变更');
    return  v_posTypeList;
  end;
end procpkg;
ibatis配置
Java代码
<resultMap id="posTypeResultMap" class="com.palic.elis.pos.common.dto.CodeTableItemDTO">  
   <result property="code" column="posType"/>  
   <result property="description" column="description"/>  
 </resultMap>  
 
  <select id="procPostype" resultMap="posTypeResultMap">  
    select * from table(cast (procpkg.procpostype(#value#) as PosTypeTable))  
  </select> 

<resultMap id="posTypeResultMap" class="com.palic.elis.pos.common.dto.CodeTableItemDTO">
   <result property="code" column="posType"/>
   <result property="description" column="description"/>
 </resultMap>

  <select id="procPostype" resultMap="posTypeResultMap">
    select * from table(cast (procpkg.procpostype(#value#) as PosTypeTable))
  </select>Dao的写法跟普通查询一样
Java代码
public List queryPostype() {  
  return this.getSqlMapClientTemplate().queryForList("pos_dayprocset.procPostype", null);  

public List queryPostype() {
  return this.getSqlMapClientTemplate().queryForList("pos_dayprocset.procPostype", null);
}
有几点需要注意,这里不能使用索引表,而是嵌套表。
另外就是把嵌套表强制转换为普通表。

 

分享到:
评论

相关推荐

    oracle存储过程常用技巧

    Oracle存储过程常用技巧 Oracle存储过程是一种强大的数据库对象,它可以帮助开发者简化复杂的业务逻辑,并提高数据库的安全性和性能。在 Oracle 中,存储过程是一种特殊的 PL/SQL 程序,它可以接受输入参数,执行...

    oracle存储过程常用的一些功能

    介绍oracle存储过程的常用使用技巧

    oracle存储过程常用的技巧(详)

    存储过程是在大型数据库系统中存储过程在数据库中经过第一次编译后就不需要再次编译,用户通过指定存储过程的名字并给出参数来,通过本篇文章带领大家去学习oracle存储过程常用的技巧,感兴趣的朋友一起来学习吧

    asp.net利用存储过程分页代码

    - 对于其他页,存储过程将采用一种巧妙的技巧:它先选取前`(@PageIndex - 1) * @PageSize`个满足条件的记录,找到其中`@fldName`字段的最大或最小值,然后选取`@PageSize`条大于(升序)或小于(降序)这个值的记录...

    VB常用技巧合集

    VB常用技巧合集 chm全集,比如ActiveX .Exe .Dll Server的多执行绪,ADO/DAO Bolb资料的存取,ADO/RDO Concurrency for SQL 的比较,ADO 连线的其他注意事项,ADO阶层式资料库表达,ADO设定独占性的资料库,Check两...

    Sybase数据库的存储过程性能优化.pdf

    存储过程是数据库管理中常用的一种编程手段,它允许开发者编写复杂的SQL语句和控制流程,以实现特定的业务逻辑。然而,游标在存储过程中的使用虽然方便,却往往会导致性能下降。 文章指出,游标是一种逐行处理数据...

    FPGA设计的四种常用思想和技巧

    流水线操作是一种常用的数据处理技巧,通过将数据处理过程分解为多个阶段,每个阶段完成特定的数据处理任务,实现高速数据流的处理。流水线操作可以应用于各种数据处理场景,例如在数字信号处理中,将信号处理过程...

    sql数据库存储过程

    SQL数据库存储过程是数据库管理系统中一个非常重要的特性,主要用于封装一系列复杂的SQL操作,提升数据库的性能、可维护性和...理解并熟练掌握存储过程的创建、调用和优化技巧,对于任何数据库开发者来说都至关重要。

    Weblogic实用教程及常用技巧集锦.doc

    4. **WebLogic常用技巧集锦** - **配置文件详解**:WebLogic的配置主要由`config.xml`文件控制,包含了服务器实例、集群、数据源、JMS队列等各种资源的配置信息。 - **安装目录结构**:WebLogic的安装目录包含多...

    蓝桥杯常用技巧1

    例如,整数1234567分解后,数组digit[10]将依次存储7,6,5,4,3,2,1。 2. 数字的条件判断:为了检查一个数字的各个数位是否都不相同,可以创建一个计数数组times,遍历数字的每一位并累加对应的计数。如果某个计数...

    VC(MFC) 常用技巧总结 - 108条

    以下是一些MFC开发中的常用技巧: 1. **获取应用程序主窗口指针**:在MFC中,每个应用程序都有一个主线程,主线程的`CWinThread`对象有一个成员变量`m_pMainWnd`,存储了主窗口的指针。你可以通过调用全局函数`...

    oracle数据库中查看系统存储过程的方法

    您可能感兴趣的文章:Oracle存储过程游标用法分析oracle存储过程常用的技巧(详)asp.net中调用oracle存储过程的方法C#调用Oracle存储过程的方法oracle 存储过程详细介绍(创建,删除存储过程,参数传递等)Oracle存储...

    MS-SQL开发常用汇总和T-SQL技巧集锦

    在MS-SQL开发中,掌握一些常用的技巧和命令可以极大地提高效率和代码质量。以下是一些关键知识点的详细说明: 1. **日期转换**:在SQL Server中,使用`CONVERT`函数可以将日期格式化。例如,`CONVERT(char(10),...

    POWERPCB常用快捷键和一些技巧

    以下将详细介绍PowerPCB的一些常用快捷键和设计过程中的技巧。 1. 移动元件技巧:在移动元件时,按下`TAB`键可以翻转元件的方向,这对于布局调整和优化至关重要。 2. 添加任意形状孔洞:在第24层使用二维线工具...

    工作常用的 oracle技巧

    - **存储过程和函数**:编写高效的PL/SQL代码,理解如何使用游标、变量、异常处理和事务控制。 - **数据库备份和恢复**:熟悉RMAN(恢复管理器)和其他备份策略,包括逻辑备份和物理备份。 - **安全性**:设置...

    Oracle常用代码技巧

    java调用Oracle的存储过程 Oracle实现分页

    Delphi常用技巧自编函数库.pdf

    这份"Delphi常用技巧自编函数库.pdf"文档提供了一系列实用的函数,涵盖了从系统操作到文件处理、界面交互等多个方面。下面我们将详细探讨这些函数的功能和应用场景。 1. **CustomCursor**: 自定义光标。允许开发者...

    PPT制作课件的常用技巧.doc

    6. **灵活放映幻灯片**:通过“动作设置”功能,可以将不同内容的幻灯片使用不同的设计模板制作并存储为单独的文件,然后在需要的地方设置超级链接,实现多个文件之间的流畅切换。例如,在一个文件的最后一张幻灯片...

Global site tag (gtag.js) - Google Analytics