最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

利用函數(shù)返回oracle對(duì)象表的三種方法

 更新時(shí)間:2016年07月18日 09:32:43   作者:ryan1985  
這篇文章主要為大家詳細(xì)介紹了利用函數(shù)返回oracle對(duì)象表的三種方法,感興趣的小伙伴們可以參考一下

因?yàn)橐祷乇韺?duì)象,無(wú)論后續(xù)用什么方法返回,都先要聲明全局type;并且,字段變量類型要為object,不能為record:

create or replace type t_test as object(
 EMPNO  NUMBER(4),
 ENAME  VARCHAR2(10),
 JOB   VARCHAR2(9),
 SAL   NUMBER(7,2)
);

create or replace type t_test_table as table of t_test;

至于返回表對(duì)象的方法,目前發(fā)現(xiàn)三種:
 1、用數(shù)組

create or replace function f_test_array(v_deptno in number default null)
return t_test_table
is 
v_test t_test_table := t_test_table();
cursor cur is select empno, ename, job, sal from emp where deptno = v_deptno;
begin
for c in cur loop
v_test.extend();
v_test(v_test.count) := t_test(c.empno, c.ename, c.job, c.sal);
end loop;
return v_test;
end;

2、用pipe

create or replace function f_test_pipe(v_deptno in number default null)
return t_test_table PIPELINED 
is
v_test t_test_table := t_test_table();
cursor cur is select empno, ename, job, sal from emp where deptno = v_deptno;
begin 
for c in cur loop
pipe row(t_test(c.empno, c.ename, c.job, c.sal)); 
end loop; 
return; 
end;

這兩種都需要用游標(biāo)遍歷,得到表對(duì)象,性能上估計(jì)第2種較高。 

3、用collect(不需要游標(biāo),代碼相對(duì)簡(jiǎn)單)

create or replace function f_test_collect(v_deptno in number default null)
return t_test_table
is 
v_test t_test_table := t_test_table();
begin
select t_test(empno, ename, job, sal) bulk collect into v_test from emp where deptno = v_deptno;
return v_test;
end;

需要注意的是,select into之前要先把輸出結(jié)果對(duì)象化:
t_test(empno, ename, job, sal)
否則會(huì)報(bào)錯(cuò): 
ORA-00947: 沒(méi)有足夠的值(object多字段)
ORA-00932: 數(shù)據(jù)類型不一致(object單一字段)
而如果直接在plsql塊中declare類型的話,是不需要先對(duì)象化輸出結(jié)果的。
三種函數(shù)定義方式可以測(cè)試輸出一樣的結(jié)果:

select * from table(f_test_pipe(30));
select * from table(f_test_array(30));
select * from table(f_test_collect(30));

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Oracle數(shù)據(jù)庫(kù)中TRUNC()函數(shù)示例詳解

    Oracle數(shù)據(jù)庫(kù)中TRUNC()函數(shù)示例詳解

    在Oracle數(shù)據(jù)庫(kù)中TRUNC函數(shù)主要用于截?cái)嗳掌?、時(shí)間或數(shù)值,通過(guò)指定不同的格式參數(shù),可以截取日期或時(shí)間的特定部分,如年份、月份、小時(shí)等,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-10-10
  • 在Linux下安裝Oracle

    在Linux下安裝Oracle

    在Linux下安裝Oracle...
    2007-03-03
  • Oracle to_char函數(shù)的使用方法

    Oracle to_char函數(shù)的使用方法

    在Oracle數(shù)據(jù)庫(kù)中,to_char函數(shù)是我們最常用的函數(shù)之一,下文對(duì)to_char函數(shù)的應(yīng)用作了詳細(xì)的介紹,如果您感興趣的話,不妨一看
    2014-08-08
  • 解決Oracle字符串中包含數(shù)字、特殊符號(hào)的排序問(wèn)題

    解決Oracle字符串中包含數(shù)字、特殊符號(hào)的排序問(wèn)題

    最近做項(xiàng)目遇到這樣的需求,要求實(shí)現(xiàn)某小區(qū)需要按照小區(qū)、樓棟、單元號(hào)、房間號(hào)進(jìn)行排序??此坪芎?jiǎn)單的一個(gè)需求,一條sql語(yǔ)句搞定,其實(shí)套路很深,下面小編給大家分享下Oracle字符串中包含數(shù)字、特殊符號(hào)的排序問(wèn)題
    2017-11-11
  • oracle異常(預(yù)定義異常,自定義異常)應(yīng)用介紹

    oracle異常(預(yù)定義異常,自定義異常)應(yīng)用介紹

    在開(kāi)發(fā)過(guò)程中,經(jīng)常會(huì)遇到一些測(cè)試,這時(shí)候就會(huì)想了解測(cè)試的過(guò)程,然后再根據(jù)過(guò)程分析代碼錯(cuò)在哪里,這種情況下,就需要用到自定義異常,需要了解的朋友可以參考本文
    2012-11-11
  • SQL優(yōu)化之針對(duì)count、表的連接順序、條件順序、in及exist的優(yōu)化

    SQL優(yōu)化之針對(duì)count、表的連接順序、條件順序、in及exist的優(yōu)化

    這篇文章主要介紹了SQL優(yōu)化之針對(duì)count、表的連接順序、條件順序、in及exist的優(yōu)化,有助于讀者深入理解Oracle的運(yùn)行效率及優(yōu)化策略,需要的朋友可以參考下
    2014-07-07
  • plsql和tsql常用函數(shù)比對(duì)

    plsql和tsql常用函數(shù)比對(duì)

    plsql與tsql的語(yǔ)法不同,大家可以參考下。
    2009-09-09
  • Oracle SQL注入的實(shí)例總結(jié)

    Oracle SQL注入的實(shí)例總結(jié)

    在網(wǎng)絡(luò)中,數(shù)據(jù)庫(kù)驅(qū)動(dòng)的Web應(yīng)用隨處可見(jiàn),由此而存在的SQL注入是影響企業(yè)運(yùn)營(yíng)且最具破壞性的漏洞之一,下面這篇文章主要給大家介紹了關(guān)于Oracle SQL注入的相關(guān)資料,需要的朋友可以參考下
    2021-11-11
  • Oracle常用命令大全集

    Oracle常用命令大全集

    Oracle常用命令大全集...
    2007-03-03
  • 使用JDBC連接ORACLE的三種URL格式

    使用JDBC連接ORACLE的三種URL格式

    這篇文章主要介紹了JDBC連接使用JDBC連接ORACLE的三種URL格式,每種格式通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-10-10

最新評(píng)論

隆尧县| 昌黎县| 中江县| 克什克腾旗| 徐州市| 东城区| 香格里拉县| 昔阳县| 汉中市| 枞阳县| 雷山县| 长泰县| 隆子县| 婺源县| 靖安县| 陵水| 当雄县| 沽源县| 新和县| 通辽市| 梓潼县| 武宣县| 灵石县| 乌拉特中旗| 雷州市| 沙河市| 庄浪县| 奇台县| 南郑县| 得荣县| 普格县| 曲麻莱县| 克山县| 延吉市| 潮州市| 手游| 九江市| 宾川县| 凉城县| 皋兰县| 屏东市|