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

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

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

因為要返回表對象,無論后續(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;

至于返回表對象的方法,目前發(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;

這兩種都需要用游標遍歷,得到表對象,性能上估計第2種較高。 

3、用collect(不需要游標,代碼相對簡單)

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之前要先把輸出結果對象化:
t_test(empno, ename, job, sal)
否則會報錯: 
ORA-00947: 沒有足夠的值(object多字段)
ORA-00932: 數(shù)據(jù)類型不一致(object單一字段)
而如果直接在plsql塊中declare類型的話,是不需要先對象化輸出結果的。
三種函數(shù)定義方式可以測試輸出一樣的結果:

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

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

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

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

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

    在Linux下安裝Oracle

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

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

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

    解決Oracle字符串中包含數(shù)字、特殊符號的排序問題

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

    oracle異常(預定義異常,自定義異常)應用介紹

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

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

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

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

    plsql與tsql的語法不同,大家可以參考下。
    2009-09-09
  • Oracle SQL注入的實例總結

    Oracle SQL注入的實例總結

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

    Oracle常用命令大全集

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

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

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

最新評論

永和县| 哈密市| 封开县| 平阴县| 女性| 漳州市| 邢台县| 桐城市| 安义县| 临武县| 县级市| 中卫市| 云龙县| 朝阳县| 宁武县| 土默特右旗| 上犹县| 汝南县| 公安县| 湖北省| 永修县| 桐庐县| 芜湖市| 闸北区| 涿州市| 库尔勒市| 天镇县| 大同市| 台中县| 合水县| 奎屯市| 玉屏| 南投县| 阿合奇县| 紫阳县| 中江县| 马龙县| 灵山县| 平潭县| SHOW| 沙洋县|