我有一個遊標返回兩個值:一個我將使用(因此將分配給一個out
變量)和另一個我只返回使ROWNUM的東西工作。爲什麼這個PL/SQL過程不起作用?
如果我將遊標作爲查詢運行,它按預期工作。但是如果我執行該程序,則out
變量爲空。我的方法不知何故不被支持?我的意思是,返回兩個值,但只使用其中之一?這個是我的程序代碼:(不要在查詢本身上鑽得太多,它的工作原理,我知道它有點難看,但是它可以工作,這是我發現返回倒數第二個的唯一方法行)
procedure retorna_infos_tabela_164(i_nip in varchar,
o_CODSDPANTERIOR out number) is
cursor c_tabela_164 is
select *
from(
select CODSDP,ROWNUM rn
from
(
select NRONIP,CODTIPOMOV,CODSDP
from TB164_HISTORICOMOVIMENTACOES
where NRONIP = i_nip and
CODTIPOMOV='S1'
order by DTHMOV desc
)
)
where rn=2;
v_temp_nr number;
begin
open c_tabela_164;
fetch c_tabela_164 into o_CODSDPANTERIOR,v_temp_nr;
close c_tabela_164;
end retorna_infos_tabela_164;
編輯我試圖運行此程序的方式是通過dbms_output.put_line(o_CODSDPANTERIOR)
沒有工作。然後我google了一下,看到我應該先var TO_CHAR()
然後輸出它。也沒有工作。
是否可以將光標作爲查詢運行? (在sybase中不是) – 2011-12-16 17:53:01
@aF如果你在`select`關鍵字之前切斷了部分,你可以運行它。 :) – GolezTrol 2011-12-16 17:55:48