做到這一點的最好方法是使用遊標變量,通常稱爲參考遊標。這基本上是一個指向結果集的指針。一個REF CURSOR的好處是,我們可以改變select語句,就像這樣:
create or replace package student_utils is
-- a hard-types ref cursor
type stud_cur is ref cursor return students%rowtype;
function get_students
(p_sid in students.sid%type := null)
return stud_cur;
end;
請注意,我已經決定了你是如何打算使用代碼夫婦推定。使用包可以讓我們定義一個硬類型的遊標,這意味着它只能用於匹配STUDENTS表的投影的查詢。 (如果你沒有一個學生實際表,你可以使用的意見或定義一個PL/SQL記錄來代替。)
create or replace package body student_utils is
function get_students
(p_sid in students.sid%type := null)
return stud_cur
is
return_value stud_cur;
begin
if p_sid is null
then
open return_value for
select * from m_viewallStudents;
else
open return_value for
select * from m_viewStudent
where sid = p_sid;
end if;
return return_value;
end;
end;
這些查詢都是硬編碼的,但我們可以用動態的同時打開引用遊標SQL,這是一個強大的技術。
閱讀文檔至find out more.
來源
2013-02-03 11:58:57
APC
爲什麼這會被關閉爲「off topic」?這個問題似乎決定於編程和軟件開發。如果沒有,有很多SQL問題需要關閉... –