--說明: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 ...