1、先要声明全局type;并且,字段变量类型要为object,不能为record:

(1)CREATE OR REPLACE TYPE "DDD_BY_DEPT_STATISTISC" is object (      --建立一个对象
DEPT_CODE VARCHAR2(200),
DEPT_NAME VARCHAR2(200),
SYQD NUMBER,
ZKZTS NUMBER
)

(2)CREATE OR REPLACE TYPE "DDD_BY_DEPT_STATISTISC_TB"  is table of DDD_BY_DEPT_STATISTISC--包含对象的table

2、建立一个带返回值的函数

create or replace function fn_get_antib_statistisc(BILLING_DATE_MIN IN varchar2, BILLING_DATE_MAX IN varchar2,TIME_TYPE IN VARCHAR2)--TIME_TYPE 发生=1结算=2
return TP_ANTIBIOTIC_STATISTISC_TB
is
o_tb TP_ANTIBIOTIC_STATISTISC_TB := TP_ANTIBIOTIC_STATISTISC_TB();
i number := 0;
TIME_TYPES VARCHAR2(20):=TIME_TYPE;

cursor cur is--建立游标,先把要返回的内容放在游标里
select patient_id,
pat_name,
doctor,
drdered_by,
dept_name,
visit_id,
sum(costs) costs,
rcpt_no,
statistisc_bz from antibiotic_statistisc
OPERATION_STATISTICS where date_time>=to_date(BILLING_DATE_MIN,'yyyy-mm-dd')
and date_time<to_date(BILLING_DATE_MAX,'yyyy-mm-dd')+1 and STATISTISC_BZ=TIME_TYPES group by patient_id,
pat_name,
doctor,
drdered_by,
dept_name,
visit_id,
rcpt_no,
statistisc_bz;
begin

for Temp in cur loop--循环将游标里的对象赋值到装对象的集合中
o_tb.extend;-------A
i := i + 1;----------B       每次向o_tb添加对象时都要进行AB操作
o_tb(i) := TP_ANTIBIOTIC_STATISTISC (

Temp.patient_id,
Temp.pat_name,
Temp.doctor,
Temp.drdered_by,
Temp.dept_name,
Temp.visit_id,
Temp.costs,
Temp.rcpt_no,
'',
Temp.statistisc_bz
);

end loop;
return o_tb;
end fn_get_antib_statistisc;

oracle 用函数返回对象集合的更多相关文章

  1. 浅谈Oracle函数返回Table集合

    在调用Oracle函数时为了让PL/SQL 函数返回数据的多个行,必须通过返回一个 REF CURSOR 或一个数据集合来完成.REF CURSOR 的这种情况局限于可以从查询中选择的数据,而整个集合 ...

  2. Mybatis下配置调用Oracle自定义函数返回的游标结果集

    在ibatis和Mybatis对存储过程和函数函数的调用的配置Xml是不一样的,以下是针对Mybatis 3.2的环境进行操作的. 第一步配置Mapper的xml内容 <mapper names ...

  3. Oracle的函数返回表类型(转)

    在SQL Server中有表变量,可以在function中方便地返回,习惯SQL Server或者需要把脚本从SQL Server转到Oracle中的朋友可以都会碰到这个问题. Oracle的func ...

  4. php json_encode()函数返回对象和数组问题

    php json_encode() 函数格式化数据时会根据不同的数组类型格式化不同类型的json数据 索引数组时 <?php $arr = [1,2,3,4,5]; print_r(json_e ...

  5. 在mybatis中使用sum函数返回对象为Null

    首先大家看一下我的XML中的SQL .DAO  和实体对象 XML DAO PO 乍一看 没毛病. 但是在Mybatis中使用sum函数,如果返回值是0(就是你在Navicat中运行的的sql正常,结 ...

  6. C++ 函数返回对象时并没有调用拷贝构造函数

    #include <iostream> #include <vector> #include <string.h> using namespace std; cla ...

  7. oracle自定义函数返回结果集

    首先要弄两个type,不知道什么鬼: 1. create or replace type obj_table as object ( id ), name ), ) ) 2. create or re ...

  8. 孤荷凌寒自学python第十九天python函数嵌套与将函数作为返回对象及闭包与递归

    孤荷凌寒自学python第十九天python函数嵌套与将函数作为返回对象及闭包与递归 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) Python函数非常的灵活,今天学习了python函数的以 ...

  9. oracle管道函数的用法

    oracle管道函数是一类特殊的函数,oracle管道函数返回值类型必须为集合,下面将介绍oracle管道函数的语法. 在普通的函数中,使用dbms_output输出的信息,需要在服务器执行完整个函数 ...

随机推荐

  1. 解释 Hello1.java

    hello1.java 代码 package javaeetutorial.hello1; import javax.enterprise.context.RequestScoped; import ...

  2. PostgreSQL11.2 configure卡住 checking for DocBook XML V4.2

    在PG11.2的数据库编译过程中,卡在了“checking for DocBook XML V4.2”,不动,需要安装docbook才可以. 需要安装: yum install docbook-dtd ...

  3. IOS消息推送(转)

    第一部分 首先第一步当然是介绍一下苹果的推送机制(APNS)咯(ps:其实每一篇教程都有),先来看一张苹果官方对其推送做出解释的概要图. Provider是给你手机应用发出推送消息的服务器,而APNS ...

  4. iOS 开发 Framework

    制作Framework 的好处和缺点 好处:       1.如果模块间接口定义的比较完善,模块化的程序具有很好的可扩展性与内聚性:       2.物理上的模块化便于开发过程的管理与测试,尤其是在程 ...

  5. for (Sms sms : smsLists){}

    for (Sms sms : smsLists){ } //类似下面的for循环 :Smslists[i]!=NULL;i++) { Sms sms=Smslists[i]; } /*其实就是把Sms ...

  6. 设置ip地址、掩码、网关、DNS

    @echo offcolor f8mode con cols=40 lines=8echo.echo.echo      设置IP为:echo.set /p ip=              192. ...

  7. 带CookieContainer进行post

    1.获取CookieContainer ——用户登录 CookieContainer cookie = new CookieContainer(); UserLoginPost("post地 ...

  8. $.grep()的用法

    grep()方法用于数组元素过滤筛选 grep(array,callback,invert) array:待过滤数组; callback:处理数组中的每个元素,并过滤元素,该函数中包含两个参数,第一个 ...

  9. 剑指offer-int类型负数补码中1的个数-位操作

    在java中Interger类型表示的最大数是 System.out.println(Integer.MAX_VALUE);//打印最大整数:2147483647 这个最大整数的二进制表示,头部少了一 ...

  10. Oracle plsql乱码

    方法1.执行  set NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK 方法2.执行--regedit--查找--NLS_LANG--设置值 SIMPLIFIED ...