Oracle中過程/函式返回結果集
引用:http://blog.csdn.net/feiliu010/article/details/1538822
Oracle中函式/過程返回結果集的幾種方式:
以函式return為例,儲存過程只需改為out引數即可,在oracle 10g測試通過.
(1) 返回遊標:
return的型別為:SYS_REFCURSOR
之後在IS裡面定義變數:curr SYS_REFCURSOR;
最後在函式體中寫:
open cur for
select ......;
return cur;
例:
CREATE OR REPLACE FUNCTION A_Test(
orType varchar2
)RETURN SYS_REFCURSOR
is
type_cur SYS_REFCURSOR;
BEGIN
OPEN type_cur FOR
select col1,col2,col3 from testTable ;
RETURN type_cur;
END;
(2)返回table型別的結果集:
首先定義一個行型別:
CREATE OR REPLACE TYPE "SPLIT_ARR" AS OBJECT(nowStr varchar2(18))
其次以此行型別定義一個表型別:
CREATE OR REPLACE TYPE "SPLIT_TAB" AS TABLE of split_arr;
定義函式(此函式完成字串拆分功能):
CREATE OR REPLACE FUNCTION GetSubStr(
str in varchar2, --待分割的字串
splitchar in varchar2 --分割標誌
)
return split_tab
IS
restStr varchar2(2000) default GetSubStr.str;--剩餘的字串
thisStr varchar2(18);--取得的當前字串
indexStr int;--臨時存放分隔符在字串中的位置
v split_tab := split_tab(); --返回結果
![](https://i.iter01.com/images/4a704ceebc1729f9ebf73b1f61e4473fb2295750fefd516144d8b1e3d3f8af4e.gif)
begin
dbms_output.put_line(restStr);
while length(restStr) != 0
LOOP
<<top>>
indexStr := instr(restStr,splitchar); --從子串中取分隔符的第一個位置
![](https://i.iter01.com/images/4a704ceebc1729f9ebf73b1f61e4473fb2295750fefd516144d8b1e3d3f8af4e.gif)
if indexStr = 0 and length(restStr) != 0 then--在剩餘的串中找不到分隔符
begin
v.extend;
v(v.count) := split_arr(Reststr);
return v;
end;
end if;
if indexStr = 1 then---第一個字元便為分隔符,此時去掉分隔符
begin
restStr := substr(restStr,2);
goto top;
end;
end if;
if length(restStr) = 0 or restStr is null then
return v;
end if;
v.extend;
thisStr := substr(restStr,1,indexStr - 1); --取得當前的字串
restStr := substr(restStr,indexStr + 1);---取剩餘的字串
![](https://i.iter01.com/images/4a704ceebc1729f9ebf73b1f61e4473fb2295750fefd516144d8b1e3d3f8af4e.gif)
v(v.count) := split_arr(thisStr);
END LOOP;
return v;
end;
在PL/SQL developer中可以直接呼叫
cursor strcur is
select nowStr from Table(GetSubStr('111,222,333,,,',','));
(3)以管道形式輸出:
create type row_type as object(a varchar2(10), v varchar2(10));--定義行物件
create type table_type as table of row_type; --定義表物件
create or replace function test_fun(
a in varchar2,b in varchar2
)
return table_type pipelined
is
v row_type;--定義v為行物件型別
begin
for thisrow in (select a, b from mytable where col1=a and col2 = b) loop
v := row_type(thisrow.a, thisrow.b);
pipe row (v);
end loop;
return;
end;
select * from table(test_fun('123','456'));
Oracle中函式/過程返回結果集的幾種方式:
以函式return為例,儲存過程只需改為out引數即可,在oracle 10g測試通過.
(1) 返回遊標:
return的型別為:SYS_REFCURSOR
之後在IS裡面定義變數:curr SYS_REFCURSOR;
最後在函式體中寫:
open cur for
select ......;
return cur;
例:
![](https://i.iter01.com/images/4a704ceebc1729f9ebf73b1f61e4473fb2295750fefd516144d8b1e3d3f8af4e.gif)
![](https://i.iter01.com/images/4a704ceebc1729f9ebf73b1f61e4473fb2295750fefd516144d8b1e3d3f8af4e.gif)
![](https://i.iter01.com/images/4a704ceebc1729f9ebf73b1f61e4473fb2295750fefd516144d8b1e3d3f8af4e.gif)
![](https://i.iter01.com/images/4a704ceebc1729f9ebf73b1f61e4473fb2295750fefd516144d8b1e3d3f8af4e.gif)
![](https://i.iter01.com/images/4a704ceebc1729f9ebf73b1f61e4473fb2295750fefd516144d8b1e3d3f8af4e.gif)
![](https://i.iter01.com/images/4a704ceebc1729f9ebf73b1f61e4473fb2295750fefd516144d8b1e3d3f8af4e.gif)
![](https://i.iter01.com/images/4a704ceebc1729f9ebf73b1f61e4473fb2295750fefd516144d8b1e3d3f8af4e.gif)
![](https://i.iter01.com/images/4a704ceebc1729f9ebf73b1f61e4473fb2295750fefd516144d8b1e3d3f8af4e.gif)
![](https://i.iter01.com/images/4a704ceebc1729f9ebf73b1f61e4473fb2295750fefd516144d8b1e3d3f8af4e.gif)
![](https://i.iter01.com/images/4a704ceebc1729f9ebf73b1f61e4473fb2295750fefd516144d8b1e3d3f8af4e.gif)
(2)返回table型別的結果集:
首先定義一個行型別:
![](https://i.iter01.com/images/4a704ceebc1729f9ebf73b1f61e4473fb2295750fefd516144d8b1e3d3f8af4e.gif)
其次以此行型別定義一個表型別:
![](https://i.iter01.com/images/4a704ceebc1729f9ebf73b1f61e4473fb2295750fefd516144d8b1e3d3f8af4e.gif)
定義函式(此函式完成字串拆分功能):
![](https://i.iter01.com/images/4a704ceebc1729f9ebf73b1f61e4473fb2295750fefd516144d8b1e3d3f8af4e.gif)
![](https://i.iter01.com/images/4a704ceebc1729f9ebf73b1f61e4473fb2295750fefd516144d8b1e3d3f8af4e.gif)
![](https://i.iter01.com/images/4a704ceebc1729f9ebf73b1f61e4473fb2295750fefd516144d8b1e3d3f8af4e.gif)
![](https://i.iter01.com/images/4a704ceebc1729f9ebf73b1f61e4473fb2295750fefd516144d8b1e3d3f8af4e.gif)
![](https://i.iter01.com/images/4a704ceebc1729f9ebf73b1f61e4473fb2295750fefd516144d8b1e3d3f8af4e.gif)
![](https://i.iter01.com/images/4a704ceebc1729f9ebf73b1f61e4473fb2295750fefd516144d8b1e3d3f8af4e.gif)
![](https://i.iter01.com/images/4a704ceebc1729f9ebf73b1f61e4473fb2295750fefd516144d8b1e3d3f8af4e.gif)
![](https://i.iter01.com/images/4a704ceebc1729f9ebf73b1f61e4473fb2295750fefd516144d8b1e3d3f8af4e.gif)
![](https://i.iter01.com/images/4a704ceebc1729f9ebf73b1f61e4473fb2295750fefd516144d8b1e3d3f8af4e.gif)
![](https://i.iter01.com/images/4a704ceebc1729f9ebf73b1f61e4473fb2295750fefd516144d8b1e3d3f8af4e.gif)
![](https://i.iter01.com/images/4a704ceebc1729f9ebf73b1f61e4473fb2295750fefd516144d8b1e3d3f8af4e.gif)
![](https://i.iter01.com/images/4a704ceebc1729f9ebf73b1f61e4473fb2295750fefd516144d8b1e3d3f8af4e.gif)
![](https://i.iter01.com/images/4a704ceebc1729f9ebf73b1f61e4473fb2295750fefd516144d8b1e3d3f8af4e.gif)
![](https://i.iter01.com/images/4a704ceebc1729f9ebf73b1f61e4473fb2295750fefd516144d8b1e3d3f8af4e.gif)
![](https://i.iter01.com/images/4a704ceebc1729f9ebf73b1f61e4473fb2295750fefd516144d8b1e3d3f8af4e.gif)
![](https://i.iter01.com/images/4a704ceebc1729f9ebf73b1f61e4473fb2295750fefd516144d8b1e3d3f8af4e.gif)
![](https://i.iter01.com/images/4a704ceebc1729f9ebf73b1f61e4473fb2295750fefd516144d8b1e3d3f8af4e.gif)
![](https://i.iter01.com/images/4a704ceebc1729f9ebf73b1f61e4473fb2295750fefd516144d8b1e3d3f8af4e.gif)
![](https://i.iter01.com/images/4a704ceebc1729f9ebf73b1f61e4473fb2295750fefd516144d8b1e3d3f8af4e.gif)
![](https://i.iter01.com/images/4a704ceebc1729f9ebf73b1f61e4473fb2295750fefd516144d8b1e3d3f8af4e.gif)
![](https://i.iter01.com/images/4a704ceebc1729f9ebf73b1f61e4473fb2295750fefd516144d8b1e3d3f8af4e.gif)
![](https://i.iter01.com/images/4a704ceebc1729f9ebf73b1f61e4473fb2295750fefd516144d8b1e3d3f8af4e.gif)
![](https://i.iter01.com/images/4a704ceebc1729f9ebf73b1f61e4473fb2295750fefd516144d8b1e3d3f8af4e.gif)
![](https://i.iter01.com/images/4a704ceebc1729f9ebf73b1f61e4473fb2295750fefd516144d8b1e3d3f8af4e.gif)
![](https://i.iter01.com/images/4a704ceebc1729f9ebf73b1f61e4473fb2295750fefd516144d8b1e3d3f8af4e.gif)
![](https://i.iter01.com/images/4a704ceebc1729f9ebf73b1f61e4473fb2295750fefd516144d8b1e3d3f8af4e.gif)
![](https://i.iter01.com/images/4a704ceebc1729f9ebf73b1f61e4473fb2295750fefd516144d8b1e3d3f8af4e.gif)
![](https://i.iter01.com/images/4a704ceebc1729f9ebf73b1f61e4473fb2295750fefd516144d8b1e3d3f8af4e.gif)
![](https://i.iter01.com/images/4a704ceebc1729f9ebf73b1f61e4473fb2295750fefd516144d8b1e3d3f8af4e.gif)
![](https://i.iter01.com/images/4a704ceebc1729f9ebf73b1f61e4473fb2295750fefd516144d8b1e3d3f8af4e.gif)
![](https://i.iter01.com/images/4a704ceebc1729f9ebf73b1f61e4473fb2295750fefd516144d8b1e3d3f8af4e.gif)
![](https://i.iter01.com/images/4a704ceebc1729f9ebf73b1f61e4473fb2295750fefd516144d8b1e3d3f8af4e.gif)
![](https://i.iter01.com/images/4a704ceebc1729f9ebf73b1f61e4473fb2295750fefd516144d8b1e3d3f8af4e.gif)
![](https://i.iter01.com/images/4a704ceebc1729f9ebf73b1f61e4473fb2295750fefd516144d8b1e3d3f8af4e.gif)
![](https://i.iter01.com/images/4a704ceebc1729f9ebf73b1f61e4473fb2295750fefd516144d8b1e3d3f8af4e.gif)
![](https://i.iter01.com/images/4a704ceebc1729f9ebf73b1f61e4473fb2295750fefd516144d8b1e3d3f8af4e.gif)
![](https://i.iter01.com/images/4a704ceebc1729f9ebf73b1f61e4473fb2295750fefd516144d8b1e3d3f8af4e.gif)
![](https://i.iter01.com/images/4a704ceebc1729f9ebf73b1f61e4473fb2295750fefd516144d8b1e3d3f8af4e.gif)
![](https://i.iter01.com/images/4a704ceebc1729f9ebf73b1f61e4473fb2295750fefd516144d8b1e3d3f8af4e.gif)
![](https://i.iter01.com/images/4a704ceebc1729f9ebf73b1f61e4473fb2295750fefd516144d8b1e3d3f8af4e.gif)
![](https://i.iter01.com/images/4a704ceebc1729f9ebf73b1f61e4473fb2295750fefd516144d8b1e3d3f8af4e.gif)
![](https://i.iter01.com/images/4a704ceebc1729f9ebf73b1f61e4473fb2295750fefd516144d8b1e3d3f8af4e.gif)
![](https://i.iter01.com/images/4a704ceebc1729f9ebf73b1f61e4473fb2295750fefd516144d8b1e3d3f8af4e.gif)
![](https://i.iter01.com/images/4a704ceebc1729f9ebf73b1f61e4473fb2295750fefd516144d8b1e3d3f8af4e.gif)
![](https://i.iter01.com/images/4a704ceebc1729f9ebf73b1f61e4473fb2295750fefd516144d8b1e3d3f8af4e.gif)
![](https://i.iter01.com/images/4a704ceebc1729f9ebf73b1f61e4473fb2295750fefd516144d8b1e3d3f8af4e.gif)
在PL/SQL developer中可以直接呼叫
![](https://i.iter01.com/images/4a704ceebc1729f9ebf73b1f61e4473fb2295750fefd516144d8b1e3d3f8af4e.gif)
![](https://i.iter01.com/images/4a704ceebc1729f9ebf73b1f61e4473fb2295750fefd516144d8b1e3d3f8af4e.gif)
(3)以管道形式輸出:
![](https://i.iter01.com/images/4a704ceebc1729f9ebf73b1f61e4473fb2295750fefd516144d8b1e3d3f8af4e.gif)
![](https://i.iter01.com/images/4a704ceebc1729f9ebf73b1f61e4473fb2295750fefd516144d8b1e3d3f8af4e.gif)
![](https://i.iter01.com/images/4a704ceebc1729f9ebf73b1f61e4473fb2295750fefd516144d8b1e3d3f8af4e.gif)
![](https://i.iter01.com/images/4a704ceebc1729f9ebf73b1f61e4473fb2295750fefd516144d8b1e3d3f8af4e.gif)
![](https://i.iter01.com/images/4a704ceebc1729f9ebf73b1f61e4473fb2295750fefd516144d8b1e3d3f8af4e.gif)
![](https://i.iter01.com/images/4a704ceebc1729f9ebf73b1f61e4473fb2295750fefd516144d8b1e3d3f8af4e.gif)
![](https://i.iter01.com/images/4a704ceebc1729f9ebf73b1f61e4473fb2295750fefd516144d8b1e3d3f8af4e.gif)
![](https://i.iter01.com/images/4a704ceebc1729f9ebf73b1f61e4473fb2295750fefd516144d8b1e3d3f8af4e.gif)
![](https://i.iter01.com/images/4a704ceebc1729f9ebf73b1f61e4473fb2295750fefd516144d8b1e3d3f8af4e.gif)
![](https://i.iter01.com/images/4a704ceebc1729f9ebf73b1f61e4473fb2295750fefd516144d8b1e3d3f8af4e.gif)
![](https://i.iter01.com/images/4a704ceebc1729f9ebf73b1f61e4473fb2295750fefd516144d8b1e3d3f8af4e.gif)
![](https://i.iter01.com/images/4a704ceebc1729f9ebf73b1f61e4473fb2295750fefd516144d8b1e3d3f8af4e.gif)
![](https://i.iter01.com/images/4a704ceebc1729f9ebf73b1f61e4473fb2295750fefd516144d8b1e3d3f8af4e.gif)
![](https://i.iter01.com/images/4a704ceebc1729f9ebf73b1f61e4473fb2295750fefd516144d8b1e3d3f8af4e.gif)
![](https://i.iter01.com/images/4a704ceebc1729f9ebf73b1f61e4473fb2295750fefd516144d8b1e3d3f8af4e.gif)
![](https://i.iter01.com/images/4a704ceebc1729f9ebf73b1f61e4473fb2295750fefd516144d8b1e3d3f8af4e.gif)
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29439655/viewspace-1399318/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- PostgreSQL函式:返回表查詢結果集SQL函式
- python中函式如何返回多個結果?Python函式
- mysql返回一個結果集的儲存過程小例子MySql儲存過程
- java使用mybatis 呼叫函式返回一個遊標結果集JavaMyBatis函式
- iOS FMDB有返回結果集和無返回結果集iOS
- java使用mybatis 呼叫儲存過程返回一個遊標結果集JavaMyBatis儲存過程
- Python 工匠:讓函式返回結果的技巧Python函式
- Oracle 遷移到 OB 過程中的函式改造案例Oracle函式
- 簡單的mysql儲存過程,輸出結果集MySql儲存過程
- JavaScript中Typeof返回的結果JavaScript
- Laravel 手動建立分頁返回物件結果集Laravel物件
- MyBatis 返回結果MyBatis
- 函式棧幀(呼叫過程)函式
- 【Oracle】儲存過程中將動態SQL的多行結果進行迴圈遍歷Oracle儲存過程SQL
- laravel8統一介面返回的json格式—通過自定義函式及自定義exception返回成功及失敗結果LaravelJSON函式Exception
- 【圖文】函式呼叫過程中棧的變化函式
- MySQL儲存過程 (即函式)MySql儲存過程函式
- mySql 儲存過程與函式MySql儲存過程函式
- SQL server儲存過程函式SQLServer儲存過程函式
- MySQL 儲存過程和函式MySql儲存過程函式
- MySQL儲存過程和函式MySql儲存過程函式
- go 如何處理資料庫返回的多結果集Go資料庫
- mssql 儲存過程呼叫另一個儲存過程中的結果的方法分享SQL儲存過程
- Swift 函式提前返回Swift函式
- Oracle中pivot函式詳解Oracle函式
- 工作中,Oracle常用函式Oracle函式
- Oracle中Decode()函式的使用Oracle函式
- Python 返回函式+匿名函式Python函式
- openGauss 函式及儲存過程支援函式儲存過程
- 儲存過程與儲存函式儲存過程儲存函式
- 儲存過程vs.函式QM儲存過程函式
- js函式執行過程的探究JS函式
- 編譯通過的 foo函式返回一個int編譯函式
- 通用結果類用於返回響應結果
- Python返回多個結果Python
- python中如何判斷all函式輸出結果為true?Python函式
- oracle 函式Oracle函式
- oracle or 函式Oracle函式
- springboot返回結果包裝統一返回格式Spring Boot