教程中国
PHOTOSHOP CS9.0中文版 MAYA 8.5 FOR WINDOWS Corel Painter v9.0 Flash MX2004 中文版 Illustrator cs2 中文版
VC++6.0含sp6 中英文版 VB6.0 +sp6 简体中文版 Borland Delphi 7汉化版 MSDN for vb6.0中文版 Visual Studio 2005简体
教程中国下属 文件存储共享专家BIBIDU.COM 提供大型软件,教材,源码,电影,音乐,图书等下载 更多精品请点此进入
  您目前所在位置: 教程中国 >> Oracle >> PL/SQL >> Function怎么返回一个数据集? RSS订阅
Function怎么返回一个数据集?
教程(视频,书籍)下载:  ASP.NET AutoCAD 数据库 C# ASP java photoshop 网页设计 delphi 3dmax Flash C++ VB 张孝祥 实例   更多请进入BIBIDU搜索
IT搜索引擎   

  1.CREATE OR REPLACE PACKAGE ROME AS
  
  AS
  TYPE RefCursor IS REF CURSOR;
  Function GetCompany(key IN char) return RefCursor;
  END;
  /
  CREATE OR REPLACE PACKAGE BODY ROME IS
  IS
  Function GetCompany(key IN char) return RefCursor
  Is
  v_temp RefCursor;
  BEGIN
  OPEN v_temp FOR
  SELECT * FROM Company WHERE com_ID =key;
  return v_temp;
  END GetCompany;
  END;
  
  2.(适用于PLSQL类型)
  
  Type shifts_ty is RECORD(
  comp_code  varchar2(10),
  SHIFT_CODE  varchar2(10),
  sft_flg    varchar2(10),
  beg_tm    number,
  end_tm    number,
  skills    varchar2(10)) ;
  Type shifts is Table of shifts_ty index by binary_integer;
  
  FUNCTION test_proc(test varchar2)
  
  return shifts is
  shiftspkg SHIFTS;  --表变量shiftspkg
  
  cursor q1 is select
  shifts.comp_code,shifts.shift_code,shifts.WRK_BEG_TM,shifts.WRK_end_TM,
  shifts.skills from str_shifts shifts where comp_code ='TSI'; --str_shifts是与表变量shiftspkg结构完全相同的真实表
  qty q1%rowtype;
  begin
  
  open q1;
  loop
  fetch q1 into qty;
  exit when q1%notfound;
  
  for iCount in 1.. qty.skills.count
  loop
  shiftspkg(icount).comp_code:= qty.comp_code;
  shiftspkg(icount).SHIFT_CODE:= qty.shift_code;
  shiftspkg(icount).sft_flg:= 'SLOTS';
  shiftspkg(icount).beg_tm:= qty.wrk_beg_tm;
  shiftspkg(icount).end_tm:= qty.wrk_end_tm;
  shiftspkg(icount).skills:= qty.skills(icount);
  end loop;
  end loop;
  return  shiftspkg;
  end;
  end;
  
  3.使用于SQL类型
  
  create or replace type myScalarType as object
  ( comp_code varchar2(10),
  shift_code varchar2(10),
  sft_flg    varchar2(10),
  beg_tm    number,
  end_tm    number,
  skills    varchar2(10)
  )
  
  create or replace type myArrayType as table of myScalarType
  
  FUNCTION test_proc(test varchar2) return myArrayType
  is
  l_data myArrayType := myArrayType() ;
  begin
  for i in 1 .. 5
  loop
  l_data.extend;
  l_data( l_data.count ) := myScalarType( 'cc-'||i,
  'sc-'||i,
  'flg-'||i,
  i,
  i,
  test||i );
  end loop;
  
  return l_data;
  end;
  
  end;
  
  select *
  from THE ( select cast( pkg_test.test_proc('hello') as myArrayType )
  from dual ) a
  或
  select *
  from table ( cast( my_function() as mytabletype  ) )
  order by seq

来源:upschool.com.cn
作者:
关键字:数据集
发表日期:2007-1-6 0:30:02

网页显示有限 阅读全文请下载本文完整版WORD文档

上一篇:获得应用程序所执行的SQL语句   下一篇:Oracle数据库-关于外联接


2008-12-3 7:00:10
本文的相类似文章
  • VB调用Oracle返回数据集
  • DataSet 添加数据集、行、列、主键和外键等操作示例
  • Object/DataSet Relational Mapping(对象/数据集关系映射1
  • Object/DataSet Relational Mapping(对象/数据集关系映射2
  • Delphi数据集过滤技巧
  • 查找一条数据,在数据集里
  • 利用数据集在水晶报表中显示图像的 .NET 程序教程
  • 数据集的结构定义与实例的关系(转)
  • .net多语言和数据集内多数据表的处理(3)
  • .net多语言和数据集内多数据表的处理(1)
  • 在学习中进步 在进步中成长 教程中国相随您的成长之路
    华腾联合科技股份有限公司版权所有
    广告联系:Rosibo@163.com