【发布时间】:2011-12-16 17:39:06
【问题描述】:
我有一个游标,它返回两个值:一个是我将使用的(因此将分配给一个 out 变量),另一个是我只返回以使 ROWNUM 工作正常的。
如果我将游标作为查询运行,它会按预期工作。但是,如果我执行该过程,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),但它不起作用。然后我用谷歌搜索了一下,发现我应该先TO_CHAR()我的变量,然后再输出。也没有用。
【问题讨论】:
-
是否可以将游标作为查询运行? (在 sybase 中不是)
-
@aF 把
select关键字前面的部分剪掉就可以运行了。 :) -
我认为游标是查询。你可以在 sql runner 中按 ctrl+c 然后按 ctrl+v。
标签: sql oracle stored-procedures plsql toad