oracle 函式返回資料集(如list)

2021-07-30 06:08:33 字數 1007 閱讀 9122

--說明:oracle函式中無法傳遞大於4000個字元長度的字元,

--可通過以下方法解決:建個臨時表,當做list 來儲存資料,將要儲存的資料都傳進該臨時表內,然後結果中返回該臨時表

--建立表結構型別

create or replace type jg_test_type as object (unintinfo varchar2 (1024));

--建立巢狀表型別

create or replace type jg_test_list as table of jg_test_type;

--建立函式

create or replace function jg_get_table_test1 return jg_test_list  pipelined is

type cur is ref cursor;

v_unintinfo jg_test_type;--臨時變數

v_num integer;

c_cur    cur;

uuid integer;

begin

open c_cur for

select t.uuid  from user t;

loop

fetch c_cur into uuid;

exit when c_cur%notfound;

if uuid is not null then

v_unintinfo:=jg_test_type(uuid);   -- 通過jg_test_type 迴圈將uuid放進變數 v_unintinfo 中

pipe row(v_unintinfo);-- 將臨時變數放入返回的結果中

end if;

end loop;

return ;-- 返回資料

end;

--呼叫函式

select * from user t  where t.uuid in(select * from table (jg_get_table_test1())) ;

Oracle函式返回表型別 結果集

一.用自定義型別實現 1 建立表物件型別。在oracle中想要返回表物件,必須自定義乙個表型別,如下所示 create or replace type type table is table of number 上面的型別定義好後,在function使用可用返回一列的表,稍後介紹返回多列的 2 建立...

oracle使用儲存過程返回資料集

很多時候,我們想通過儲存過程獲得乙個輸出集。我們知道sql server的儲存過程在執行之後,返回的就是乙個集合。但是oracle如果要獲得乙個輸出集合,就要麻煩一點了。oracle獲得輸出集合是通過游標實現的,而且游標需要在package中進行宣告。下面就拿分頁的儲存過程為例。首先,先建立乙個包p...

c 呼叫oracle儲存過程返回資料集

2008 12 20 10 59 57 分類 net 字型大小訂閱 create or replace package pkg tabletype istype tabletype is ref cursor procedure sp cpzd cpno in varchar2,status in ...