麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 數據庫 > 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教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 国产色片 | 在线免费观看麻豆 | 亚欧美一区二区 | 草莓福利社区在线 | 一级免费看片 | 欧美性受xxxx白人性爽 | 欧美视频国产精品 | 一级大黄毛片 | 一日本道久久久精品国产 | chengrenzaixian| 一区小视频 | 亚洲第一色婷婷 | 午夜精品成人一区二区 | 亚洲射逼| 国产精品视频自拍 | 男女无遮挡羞羞视频 | 国产精品二区高清在线 | 91成人免费视频 | 欧美 日本 在线 | 国产精品亚洲激情 | 亚洲精品久久久久www | 久久艹艹艹 | 中文字幕精品在线视频 | 国产精品一区在线观看 | 国产午夜精品久久久 | 99热久草 | 国产手机av在线 | 毛片大全| 被啪羞羞视频在线观看 | 午夜精品小视频 | 久久久久久久一区二区三区 | 成人在线免费观看视频 | 亚洲国产女同久久 | 7777在线视频免费播放 | 亚洲视频成人 | 国产精品久久久久久238 | 久久国产精品99久久人人澡 | 草草免费视频 | 久久激情小视频 | 亚洲国产高清自拍 | 欧美成人免费看 |