【发布时间】:2010-08-20 21:59:21
【问题描述】:
来自Oracle: "当你声明一个游标变量作为从游标变量中取数据的子程序的形参时,必须指定IN或IN OUT模式。如果子程序也打开游标变量,你必须指定IN OUT模式。”
但是,我可以编码(只有 OUT 参数):
create or replace procedure mycur_out(mc OUT mycurpkg.mytypecur) as
begin
open mc for select * from mytable;
end mycur_out;
并且等于(IN OUT 参数)
create or replace procedure mycur_inout(mc IN OUT mycurpkg.mytypecur)
as
begin
open mc for select * from table10;
end mycur_inout;
另外,动态光标也可以正常工作:
create or replace procedure mycur_out_ref(mc out mycurpkg.mytyperefcur)
as
begin
open mc for 'select * from table10';
end mycur_out_ref;
我已经直接从 oracle 和带有 ADO 的 VB6 测试了这 3 个案例,没有问题。
那么,在那种情况下,IN 只使用“OUT”和“IN OUT”游标参数有什么区别吗?
更新 我问的原因:
- 我们使用类似的例程读取数据 示例(只需打开 游标)。游标参数 总是“IN OUT”(别问我 为什么,我想弄清楚)
- 使用 ADO/VB6 调用例程
- 现在,我们正在尝试使用 JDBC 中的一些例程,但是 适配器显然只接受 OUT 这种情况下的参数。
- 最后,主要原因,我想改变DB上的游标参数 例程只 OUT,但首先我 想知道络脉效应 的变化。
谢谢!
【问题讨论】:
-
看代码,不是问题'OUT 和IN OUT 游标参数有什么区别吗?'。没有带有 IN 参数的示例。
-
好点,JulesLt。我正在更新问题。谢谢!
标签: sql oracle parameters plsql cursor