其中tt1是表1,tt2是表2
定義mo_id ,name ,v_name ...字元長度時,是實際表中的字段定義長度
//建立型別
create or replace type myscalartype
as object (mo_id varchar2(100),name varchar2(100))
create or replace type mytabletype as table of myscalartype
//分割字元
create or replace procedure split_string_sp(p_instr in varchar2,--傳入字串,逗號分隔,輸入引數
p_strs out varchar2,--擷取第1個值之後剩下的字串,輸出引數
p_curr out varchar2, --擷取到的第1個值,輸出引數
p_char in varchar2 --以什麼字元為分隔字元
) is
curr_loca number;
begin
curr_loca := instr(p_instr, p_char, 1, 1);
p_curr := substr(p_instr, 0, curr_loca - 1);
if p_curr is null then
p_curr := p_instr;
p_strs := null;
else
p_strs := substr(p_instr, curr_loca + 1);
end if;
end;
//建立函式
create or replace function getallex return mytabletype pipelined
astype c1 is ref cursor;
cur_name c1;
cur_my c1;
v_mo_id varchar2(100);
v_fail_acc_unit varchar2(50);
v_new_fail_acc_unit varchar2(50);
v_name varchar2(100);
v_return varchar2(10);
v_current varchar2(10);
begin
open cur_my for 'select mo_id, fail_acc_unit from tt1';
loop
fetch cur_my into v_mo_id,v_fail_acc_unit;
exit when cur_my%notfound;
--迴圈aa;bb;cc欄位
while v_fail_acc_unit is not null
loop
--exit when v_fail_acc_unit is null;
split_string_sp(v_fail_acc_unit, v_return, v_current, ';');
--查詢name
open cur_name for 'select name from tt2 where party_id = ''' || v_current || '''';
loop
fetch cur_name into v_name;
exit when cur_name%notfound;
end loop;
close cur_name;
pipe row(myscalartype(v_mo_id,v_name));
v_fail_acc_unit := v_return;
end loop;
dbms_output.put_line(v_mo_id);
dbms_output.put_line(v_new_fail_acc_unit);
v_new_fail_acc_unit := null;
end loop;
close cur_my;
return;
end;
//c++呼叫
select * from table(getallex())
Object T(以下代指泛型) 的區別
我們先來試著理解一下object類,學習j a的應該都知道object是所有類的父類,注意 那麼這就意味著它的範圍非常廣!首先記住這點,如果你的引數型別時object,那麼的引數型別將非常廣!thinking in j a 中說很多原因促成了泛型的出現,最引人注目的乙個原因就是為了創造容器類。這個要...
oracle 游標使用
create or replace function errortyperead return varchar2 is result varchar2 3000 type cursor type is ref cursor tempname varchar2 100 cursor testcur i...
oracle使用小結
1.儲存過程出錯 pls 00103 出現符號 在需要下列之一時 create or replace procedure udf sp tlog add in l id number,in l type number,in b id number,in l desc varchar2 200 in ...