如何從PL-SQL函數中返回2個值?從PL-SQL函數中返回2個值
回答
您可以直接返回一個值,另一個爲OUT參數。或者您返回包含這兩個值的記錄。在大多數情況下,第一種選擇更簡單。
它被普遍認爲是不好的做法,有一個OUT參數在函數的簽名中。 – APC 2010-08-17 13:05:25
函數應該返回1個值,存儲過程可以並應該用於返回多個值。 – Kuberchaun 2010-08-18 17:01:02
嘗試使用OUT
參數:
create or replace function f(a IN NUMBER, b OUT NUMBER) RETURN NUMBER IS
BEGIN
b := a;
RETURN a;
END f;
我不會主張與用於第二值OUT參數創建一個功能,因爲我喜歡把用作純概念:一個函數對一個或多個輸入的操作,以產生一個輸出。它不應該改變任何論點或有任何其他「副作用」。
所以如果你需要兩個輸出,寫一個程序代替:
procedure get_sqrt_and_half
(p_input number
, p_sqrt OUT number
, p_half OUT number
)
is
begin
p_sqrt := sqrt(p_input);
p_half := p_input/2;
end;
我同意託尼。任何具有多個輸出或使用IN OUT參數的應該是一個過程。通過保持函數清潔(沒有外部副作用),將函數調用鏈接在一起變得更容易,當有參數輸入/輸出時,您無法輕鬆執行這些調用。 請記住,函數的輸出可能是複雜類型 - %ROWTYPE,用戶定義的記錄,對象類型,集合或引用遊標 - 有很多方法可以返回複雜的數據。 – JulesLt 2010-08-17 09:20:22
函數只能返回一個SQL類型,但可以是用戶定義的類型有多個值。在推薦此解決方案之前,我需要更多地瞭解實際的最終需求,但這是一種可能性。
create or replace type a_b is object (a number, b number);
/
create or replace function ret_a_b return a_b is
begin
return a_b(1,2);
end;
/
select ret_a_b from dual;
select d.rab.a, d.rab.b from (select ret_a_b rab from dual) d;
**If you are wanting to use it in SQL, then you would need a pipelined function e.g.**
CREATE OR REPLACE TYPE myemp AS OBJECT
(empno number,
ename varchar2(10),
job varchar2(10),
mgr number,
hiredate date,
sal number,
comm number,
deptno number
);
CREATE OR REPLACE TYPE myrectable AS TABLE OF myemp ;
enter code here
CREATE OR REPLACE FUNCTION pipedata(p_min_row number, p_max_row number) RETURN myrectable PIPELINED IS
v_obj myemp := myemp(NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
BEGIN
FOR e IN (select *
from (
select e.*
,rownum rn
from (select * from emp order by empno) e
)
where rn between p_min_row and p_max_row)
LOOP
v_obj.empno := e.empno;
v_obj.ename := e.ename;
v_obj.job := e.job;
v_obj.mgr := e.mgr;
v_obj.hiredate := e.hiredate;
v_obj.sal := e.sal;
v_obj.comm := e.comm;
v_obj.deptno := e.deptno;
PIPE ROW (v_obj);
END LOOP;
RETURN;
END;
SQL> select * from table(pipedata(1,5));
- 1. 從函數返回2個值?
- 2. PLSQL返回值
- 3. 從func返回2個值
- 4. 2返回一個函數
- 5. 返回值,光標PLSQL
- 6. 從函數返回值
- 7. 從函數返回值
- 8. 從Ajax函數返回值
- 9. 從PostgreSQL函數返回值
- 10. 返回值從PHP函數
- 11. 從方法中返回2個值
- 12. 從映射函數返回多個值
- 13. Python的 - 從一個函數返回值
- 14. 從javascript函數返回一個值
- 15. 從函數返回多個值
- 16. 從Oracle函數返回多個值
- 17. 如何從這個函數返回值?
- 18. 從C函數返回多個值
- 19. jQuery的 - 從函數返回一個值
- 20. 如何在一個函數中獲取2個返回值
- 21. 生成器函數返回值Python 2
- 22. 返回一個PLSQL光標
- 23. 函數返回兩個值
- 24. 如何從plsql函數創建並返回遊標?
- 25. 無法從函數返回表類型PLSQL
- 26. 返回2個或多個值(函數($數據)在PHP
- 27. 如何從jQuery函數中返回值?
- 28. 從序言中的函數返回值
- 29. 從Jquery函數中忽略返回值
- 30. 從Python中的函數返回左值?
你不能返回兩個值......有一兩件事你可以做的是..讓一個數組n合併兩個values.and返回它 – PHP 2010-08-17 07:10:55