1.创建type,必须是单独的type,在pkg中的不行
CREATE OR REPLACE TYPE obj_txb_xb97 as TxbLE OF rec_xb97;
CREATE OR REPLACE TYPE rec_xb97 AS OBJECT
(
xoe001 NUMBER(18),
xxe901 NUMBER(18),
xxe140 VARCHAR2(3),
xxe210 VARCHAR2(3),
xxb210 NUMBER(18, 2),
xxb130 NUMBER(18, 2),
xxb019 VARCHAR2(3),
xxb020 VARCHAR2(3),
xxb021 VARCHAR2(3),
xxb022 VARCHAR2(3),
xxb200 VARCHAR2(20),
xxe151 VARCHAR2(3),
xxe099 VARCHAR2(3)
);
2.创建转换
/****************************
返回xb97对象用于txble函数
written by:wonder
modified by:
****************************/
FUNCTION fun_a_returnxb97type(prm_txb_xb97 IN typ_txb_xb97)
RETURN obj_txb_xb97 IS
v_row rec_xb97 := NULL;
t_xb97 obj_txb_xb97 := obj_txb_xb97();
BEGIN
-- 初始化
FOR i IN 1 .. prm_txb_xb97.COUNT LOOP
t_xb97.EXTEND();
v_row := NEW rec_xb97(prm_txb_xb97(i).xoe001,
prm_txb_xb97(i).xxe901,
prm_txb_xb97(i).xxe140,
prm_txb_xb97(i).xxe210,
prm_txb_xb97(i).xxb210,
prm_txb_xb97(i).xxb130,
prm_txb_xb97(i).xxb019,
prm_txb_xb97(i).xxb020,
prm_txb_xb97(i).xxb021,
prm_txb_xb97(i).xxb022,
prm_txb_xb97(i).xxb200,
prm_txb_xb97(i).xxe151,
prm_txb_xb97(i).xxe099);
/* v_row.xoe001 := prm_txb_xb97(i).xoe001;
v_row.xxe901 := prm_txb_xb97(i).xxe901;
v_row.xxe140 := prm_txb_xb97(i).xxe140;
v_row.xxe210 := prm_txb_xb97(i).xxe210;
v_row.xxb210 := prm_txb_xb97(i).xxb210;
v_row.xxb130 := prm_txb_xb97(i).xxb130;
v_row.xxb019 := prm_txb_xb97(i).xxb019;
v_row.xxb020 := prm_txb_xb97(i).xxb020;
v_row.xxb021 := prm_txb_xb97(i).xxb021;
v_row.xxb022 := prm_txb_xb97(i).xxb022;
v_row.xxb200 := prm_txb_xb97(i).xxb200;
v_row.xxe151 := prm_txb_xb97(i).xxe151;
v_row.xxe099 := prm_txb_xb97(i).xxe099;*/
t_xb97(i) := v_row;
END LOOP;
RETURN t_xb97;
END;
3.使用table()
-- 对table函数的使用
obj_xb97 := fun_a_returnxb97type(prm_txb_xb97);
SELECT 0 xoe001,
xxe901,
xxe140,
xxe210,
SUM(nvl(xxb210, 0)),
0,
xxb019,
xxb020,
xxb021,
xxb022,
xxb200,
xxe151,
xxe099 BULK COLLECT
INTO prm_txb_xb97
FROM TAbLE(obj_xb97)
HAVING SUM(nvl(xxb210, 0)) <> 0
GROUP BY xxe901,
xxe140,
xxe210,
xxb019,
xxb020,
xxb021,
xxb022,
xxb200,
xxe151,
xxe099;
分享到:
相关推荐
Oracle PL/SQL是一种强大的编程语言,它结合了SQL的数据处理能力与PL的程序设计特性,是Oracle数据库系统中用于创建存储过程、函数、触发器和包的主要工具。在这个"Oracle PL/SQL实战(待续)"的主题中,我们将深入...
在Oracle PL/SQL中,我们可以通过使用SQL语句来与数据库进行交互,例如SELECT用于查询数据,INSERT、UPDATE和DELETE用于修改数据。PL/SQL还提供了游标(CURSOR)机制,允许我们逐行处理查询结果。此外,PL/SQL还支持...
以下示例演示了如何在INSERT语句中使用RETURNING子句来检索刚插入的记录的ROWID和相关信息: ```sql DECLARE Row_id ROWID; info VARCHAR2(40); BEGIN INSERT INTO scott.dept VALUES (90, '财务室', '海口') ...
《Oracle PL/SQL专家指南-高级PL/SQL解决方案的设计与开发》是一本深入探讨Oracle数据库中的PL/SQL编程的专业书籍。PL/SQL是Oracle数据库特有的编程语言,它结合了SQL的查询能力与过程式编程语言的功能,使得数据库...
在"Oracle PL/SQL实例精解 数据库建立代码"中,我们将深入探讨如何在Oracle数据库中使用PL/SQL来构建一个名为"student"的模式,这包括创建数据库对象如表、索引,以及填充样本数据。 首先,"student"模式可能包含一...
- 在系统管理员的应用功能设置中,创建一个新的功能,关联之前注册的PL/SQL程序包,并设置相应的属性,如功能名称、用户功能名称、类型(SSWA PLSQL 函数)、支持维护模式(无)和上下文(责任)。 5. **注册菜单*...
下面将详细阐述PL/SQL的基本程序结构及其在过程、函数、触发器和包中的应用。 1. PL/SQL基本程序结构 PL/SQL程序由声明部分、执行部分和异常处理部分组成。声明部分定义变量、常量、游标、记录类型等;执行部分包含...
在这个实例精讲中,你将学习如何使用PL/SQL进行数据操作,创建存储过程和函数,以及如何有效地处理错误和事务。通过对"student"数据库模式的实践,你将掌握Oracle数据库管理和应用程序开发的核心技能。通过不断练习...
在IT行业中,Oracle数据库系统是广泛使用的数据管理平台,而PL/SQL是Oracle数据库系统中的核心编程语言,用于处理和管理数据库。本文将深入探讨PL/SQL代码、基本SQL语句以及过程和触发器在Oracle数据库中的应用。 ...
PL/SQL,全称为Procedural Language/Structured Query Language,是Oracle数据库的一种扩展,它将SQL语句与过程式编程语言结合在一起,为数据库管理提供了更强大的功能。本压缩包"PL/SQL语法帮助"是专为初学者设计的...
PL/SQL是一种高级的程序语言,主要用于Oracle数据库管理系统中。下面是PL/SQL数据库学习笔记的知识点总结。 一、基本原则 *瀑布模型:需求分析→设计(概要设计,详细设计:SQL语句,变量(初始值是多少,最终值...
3. **存储过程和函数**:PL/SQL支持创建可重复使用的存储过程和函数,这些在数据库中执行的代码可以接受参数,返回结果。 4. **游标**:允许逐行处理查询结果,常用于动态处理数据。 5. **包(PACKAGE)**:将相关...
PL/SQL,全称是Procedural Language/Structured Query Language,是Oracle数据库中的一个重要组成部分,它结合了SQL的查询能力与结构化编程语言的控制结构,用于开发在Oracle环境中运行的数据库应用程序。...
本文将深入探讨PL/SQL中的三个关键概念:函数、包和触发器,以及它们在Oracle数据库系统中的应用。 ### 1. 函数(Functions) 函数是PL/SQL中可重用的代码单元,它们接收输入参数,执行计算或操作,并返回一个结果...
本文将详细介绍Oracle数据库中常用的一些PL/SQL函数,包括字符串函数、数学函数、日期函数、逻辑运算函数以及其他函数。这些函数是进行数据处理和查询时非常有用的工具。 #### 字符串函数 ##### ASCII `ASCII`函数...
PL/SQL是Oracle专有的编程语言,用于在Oracle数据库环境中编写存储过程、函数、触发器等。 在Oracle PL/SQL编程中,有几个关键知识点是必须掌握的: 1. **基础语法**:PL/SQL的语法与传统的SQL有所不同,它包括...
存储过程和函数是在PL/SQL中非常重要的组成部分,它们允许开发者封装复杂数字逻辑并重复利用。 1. **存储过程**: - 存储过程没有返回值,主要用于执行一系列操作,如更新数据或执行复杂的数据处理任务。 2. **...
8. **PL/SQL块**:PL/SQL块可以是匿名块或命名块,匿名块通常用于临时的SQL操作,而命名块如存储过程和函数则用于长期使用。 通过这些元素,PL/SQL使得在Oracle数据库环境中编写复杂的业务逻辑成为可能,提高了程序...
Oracle PL/SQL 开发是数据库开发中的重要技能,它是一种结合了SQL与过程性编程语言的集成环境,专为Oracle数据库设计。通过学习PL/SQL,开发者能够编写复杂的存储过程、函数、触发器等,以实现高效的数据处理和业务...
与其他方法不同的是,PL/SQL程序直接存储在数据库中,并在数据库服务器上执行,这有助于提高性能并减少网络通信开销。 #### 二、PL/SQL简介 - **定义**: PL/SQL(Procedural Language for SQL)是在标准SQL的基础...