iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >Oracle中的table()函数使用
  • 337
分享到

Oracle中的table()函数使用

Oracletable()函数Oracletable()函数使用 2023-05-12 11:05:30 337人浏览 安东尼
摘要

目录一、序言二、table()函数使用步骤三、table() 具体使用实例3.1 table()结合数组 使用3.2 table()结合PIPELINED函数(这次报表使用的方式)3.3 table()结合系统包使用一、

一、序言

前段时间一直在弄报表,快被这些报表整吐了,然后接触到了oracle的table()函数。所以今天把table()函数的具体用法整理下,防止下次遇到忘记了。。

利用table()函数,可接收输入参数,然后将pl/sql 返回的结果集代替table。由于表函数可将数据转换分阶段处理,并省去中间结果的存储和缓冲表,所以它的速度相对物理表要快很多,当然比直接查视图更是快不少。

二、table()函数使用步骤

  • 定义对象类型
  • 对象类型定义:封装了数据结构和用于操纵这些数据结构的过程和函数。由对象类型头、对象类型体组成

  • 对象类型头:用于定义对象的公用属性和方法;

    ①属性:最少要包含一个属性,最多包含1000个属性。定义时必须提供属性名和数据类型,但不能指定默认值和not null。并且不能包括long、long raw、rowid、urowid和PL/SQL特有类型(boolean%type%rowtype\ref curdor等);

    ② 可以包含也可以不包含方法,可以定义构造方法、member方法、static方法、map方法和order方法。

    ③ 语法

create or replace type type_name as object (
        v_name1 datatype [ ,v_name2 datatype,... ],
        [ member | static method1 spec, member | static method2 spec , ... ]
);
-- type_name是对象类型的名称;
-- v_name是属性名称;
-- datatype是属性数据类型;
-- method是方法的名称;
  • 对象类型体:用于实现对象类型头所定义的公用方法。

    ① 方法类型

方法作用说明
构造方法用于初始化对象并返回对象实例与对象类型同名的函数,默认的构造方法参数是对象类型的所有属性。(9i前只能使用系统默认的构造方法、9i后可自定义构造函数,自定义必须使用constructor function关键字)
member方法用于访问对象实例的数据当使用member方法时,可以使用内置参数self访问当前对象实例。当定义member方法时,无论是否定义self参数,它都会被作为第一个参数传递给member方法。但如果要定义参数self,那么其类型必须要使用当前对象类型。member方法只能由对象实例调用,而不能由对象类型调用。
static方法用于访问对象类型可以在对象类型上执行全局操作,而不需要访问特定对象实例的数据,因此static方法引用self参数。static方法只能由对象类型调用,不能由对象实例调用(和member相反)
map方法可以在对多个对象实例之间排序;将对象实例映射成标量数值来比较可以定义map方法,但只能有一个,与order互斥
order方法只能比较2个实例的大小定义对象类型时最多只能定义一个order方法,而且map和order方法不能同时定义

② 语法

create or replace type body type_name as
    member | static method1 body;
    member | static method1 body;...
-- type_name是对象类型的名称;
-- method是方法的名称;
-- member | static 见上表格
  • 基于对象类型的表类型

语法

create or replace type table_name as table of type_name;
--table_name 表类型名称
--type_name 对象类型名称
  • 定义表函数

语法

create or replace function function_name ([p1,p2...pn]) return table_name
as
v_test table_name := table_name();
begin
...
end loop;
return v_test;
end function_name;
-- function_name 函数名称
-- p1,p2...pn 函数入参
-- table_name 表函数名称
  • 调用表函数

语法:

select * from table(function_name(20));
或者
select * from the(select function_name(20) from dual);
--function_name 定义好的表函数名称

三、table() 具体使用实例

公共部分对象类型和表类型创建

①对象类型创建

create or replace type t_test as object(
id integer,
rq date,
mc varchar2(60)
);

② 表类型创建

create or replace type t_test_table as table of t_test;

3.1 table()结合数组 使用

①创建表函数

create or replace function f_test_array(n in number default null) return t_test_table
as
v_test t_test_table := t_test_table();
begin
for i in 1 .. nvl(n,100) loop
v_test.extend();
v_test(v_test.count) := t_test(i,sysdate,'mc'||i);
end loop;
return v_test;
end f_test_array;

② 调用

select * from table(f_test_array(10));
或
select * from the(select f_test_array(10) from dual);

3.2 table()结合PIPELINED函数(这次报表使用的方式)

① 创建表函数

create or replace function f_test_pipe(n in number default null) return t_test_table PIPELINED
as
v_test t_test_table := t_test_table();
begin
for i in 1 .. nvl(n,100) loop
pipe row(t_test(i,sysdate,'mc'||i));
end loop;
return;
end f_test_pipe;

② 调用

select * from table(f_test_pipe(10));
或
select * from the(select f_test_pipe(10) from dual);

3.3 table()结合系统包使用

①创建测试

create table test (id varchar2(20),mc varchar2(20));

②表中插入数据

insert into test values('1','mc1');
commit;

③ 查看表执行计划

explain plan for select * from test;

④调用

select * from table(dbms_xplan.display);

到此这篇关于Oracle之table()函数的使用提高查询效率的文章就介绍到这了,更多相关Oracle table()函数内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

您可能感兴趣的文档:

--结束END--

本文标题: Oracle中的table()函数使用

本文链接: https://www.lsjlt.com/news/202079.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Oracle中的table()函数使用
    目录一、序言二、table()函数使用步骤三、table() 具体使用实例3.1 table()结合数组 使用3.2 table()结合PIPELINED函数(这次报表使用的方式)3.3 table()结合系统包使用一、...
    99+
    2023-05-12
    Oracle table()函数 Oracle table()函数使用
  • oracle中的to_date()函数怎么使用
    Oracle中的to_date()函数用于将字符串转换为日期类型。它的使用方法如下: to_date(string, format)...
    99+
    2023-10-21
    oracle
  • oracle中if函数的使用方法
    oracle 中 if 函数是一种控制流函数,用于基于条件执行代码块。它的语法如下:if (condition) then -- 如果条件为真,则执行此代码块else -- 如果条件...
    99+
    2024-05-03
    oracle
  • Oracle中listagg函数的使用方法
    这篇文章主要介绍Oracle中listagg函数的使用方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!listagg函数的用法这是一个Oracle的列转行函数:LISTAGG()先...
    99+
    2024-04-02
  • Oracle中的Userenv()函数怎么使用
    在Oracle中,Userenv()函数可以用于获取当前会话的用户环境信息,例如用户名、用户会话ID、客户端IP地址等。以下是Use...
    99+
    2023-10-24
    Oracle
  • oracle中的to_date函数怎么使用
    Oracle中的TO_DATE函数用于将一个字符串转换为日期型数据。其语法为:TO_DATE(string, format)其中,s...
    99+
    2023-09-04
    oracle
  • Oracle中的replace函数怎么使用
    在Oracle中,REPLACE函数用于将字符串中的指定子字符串替换为另一个子字符串。它的语法如下:REPLACE(orig...
    99+
    2023-08-17
    Oracle replace
  • oracle中sum函数的使用方法
    sum 函数在 oracle 中计算一系列值的总和。语法:sum(expression),其中 expression 为数值表达式或列名。它可以对一列中的所有行值进行求和,或通过 whe...
    99+
    2024-04-30
    oracle
  • oracle中replace函数的使用方法
    oracle 中的 replace 函数用于将字符串中指定的子字符串替换为另一个子字符串,使用方法包括:1. 替换文本中的错误或拼写错误;2. 更改字符串内容;3. 从字符串中...
    99+
    2024-05-03
    oracle
  • Oracle中的over()函数怎么使用
    今天小编给大家分享一下Oracle中的over()函数怎么使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。1 over()...
    99+
    2023-07-05
  • Oracle中的translate函数怎么使用
    在Oracle中,TRANSLATE函数用于将字符串中的一组字符替换为另一组字符。它的语法如下:TRANSLATE(string, ...
    99+
    2023-08-17
    Oracle translate
  • Oracle to_char函数的使用
    Oracle中的to_char函数用于将数据转换为字符类型,并可以指定转换的格式。to_char函数的语法如下:to_cha ...
    99+
    2023-09-22
    Oracle
  • oracle instr 函数的使用
    在Oracle中可以使用instr函数对某个字符串进行判断,判断其是否含有指定的字符。在一个字符串中查找指定的字符,返回被查找到的指定的字符的位置。语法:instr(sourceString,destStr...
    99+
    2024-04-02
  • oracle中replace函数如何使用
    在Oracle中,`REPLACE`函数的语法如下:```sqlREPLACE(string, search_string,...
    99+
    2023-10-07
    oracle
  • Oracle中decode函数如何使用
    这篇文章将为大家详细讲解有关Oracle中decode函数如何使用,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。函数介绍:DECODE函数是ORACLE P...
    99+
    2024-04-02
  • oracle中to_char函数如何使用
    在Oracle中,TO_CHAR函数用于将一个数值、日期或时间转换为字符串。它具有以下语法:TO_CHAR(expr, fo...
    99+
    2023-08-30
    oracle
  • oracle中convert函数怎么使用
    在Oracle中,CONVERT函数可以用于将一个字符串从一种字符集转换为另一种字符集。它的语法如下:CONVERT(string,...
    99+
    2023-09-04
    oracle convert
  • oracle中替换函数的使用方法
    oracle 中提供了三个替换函数:replace、translate 和 regexp_replace。replace 函数替换特定子字符串,translate 函数替换一组...
    99+
    2024-04-30
    oracle
  • oracle中如何使用CAST函数
    本篇文章为大家展示了oracle中如何使用CAST函数,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。CAST()函数可以进行数据类型的转换。CAST()函数的参数有...
    99+
    2024-04-02
  • oracle中如何使用decode函数
    今天就跟大家聊聊有关oracle中如何使用decode函数,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。  一、DECODE函数是ORACLE PL...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作