2
我想知道如何檢查引用遊標是否返回數據。如何檢查引用遊標是否從pl/sql過程返回數據
比方說,我有下面的代碼在PL/SQL包:
type refcursor is ref cursor;
procedure Foo(cursorresult out refcursor) is
begin
open cursorresult for
select *
from table t
inner join t2 on t.id = t2.id
where t.column1 is null;
end;
procedure DoSomeghingIfFooHasResults is
curFoo refcursor;
begin
Foo(curSansOwner);
if curFoo%found then
-- Do something
end if;
end function;
此代碼是更復雜的過程中使用,並在富的查詢使用多個表。
我需要從一個asp.net應用程序中的Foo返回的數據,但是當Foo找到一些數據時我也需要做些什麼。
我想在幾個地方重複使用查詢,但我不認爲這將是一個很好的候選人的觀點。
要知道Foo是否找到某種東西,最好的方法是什麼?
謝謝。
的問題是,因爲我的數據,我真正的PROC來自多個表,我不能使用%ROWTYPE。編輯的代碼示例反映出 – Martin 2010-10-28 15:36:42
你不能一般地做到這一點我同意 - 事實上你可能無法做到你想做的事。 「做某事」代碼必須知道它將要使用的數據的結構,因此它必須處理遊標不返回行的情況。 – 2010-10-28 15:58:15
您可以聲明一個記錄類型以獲取,從基礎查詢中匹配預期的輸出字段類型。 (希望你已經簡化了,但使用'*'並不理想;除此之外,你有兩列稱爲'ID')。 – 2010-10-28 15:59:18