a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 數據庫 > Oracle > 正文

利用函數返回oracle對象表的三種方法

2024-08-29 13:59:09
字體:
來源:轉載
供稿:網友

因為要返回表對象,無論后續用什么方法返回,都先要聲明全局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;

至于返回表對象的方法,目前發現三種:
 1、用數組

create or replace function f_test_array(v_deptno in number default null)return t_test_tableis v_test t_test_table := t_test_table();cursor cur is select empno, ename, job, sal from emp where deptno = v_deptno;beginfor c in cur loopv_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 isv_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 looppipe 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_tableis v_test t_test_table := t_test_table();beginselect 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: 數據類型不一致(object單一字段)
而如果直接在plsql塊中declare類型的話,是不需要先對象化輸出結果的。
三種函數定義方式可以測試輸出一樣的結果:

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

函數返回oracle對象表,oracle對象表

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


注:相關教程知識閱讀請移步到oracle教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 久久婷婷网 | 后进极品白嫩翘臀在线视频 | 精品国产乱码久久久久久久软件 | 妞干网免费在线视频 | 中文在线a在线 | 国产在线第一页 | 手机看片福利 | 视频一二区 | 操人网址 | 国产精品视频一区二区三区四区国 | 国产美女黄色片 | 国产毛片在线 | 欧美精品在线免费观看 | 国产欧美在线观看 | 91精品综合久久久久久五月天 | 久久国产精彩视频 | 国产精品久久久久久福利一牛影视 | 精品日韩欧美一区二区在线播放 | 婷婷久久综合 | 国产偷v国产偷∨精品视频 国产偷v国产偷v亚洲 | 久久精品免费电影 | 91一区二区三区 | 99re热精品视频 | 国产欧美日韩一区二区三区 | 91在线精品秘密一区二区 | 久久久欧美 | 国产视频网| 久久久久久久国产精品影院 | 黄色一级大片视频 | 国产精品1区2区3区 国产成人精品一区二区三区四区 | 欧美在线一二三 | 91精品国产色综合久久不卡98口 | 九九热精品在线观看 | 精品www| 午夜精品久久久久久久久久久久 | 草草草久久久 | 日韩一区二区在线观看视频 | 国产精品毛片无码 | 精品国产一区二区三区国产馆杂枝 | 成人av电影免费在线观看 | 毛片免费观看网址 |