Oracle Ref游标只能与过程和函数一起使用吗?

Oracle Ref游标只能与过程和函数一起使用吗?,oracle,plsql,odp.net,Oracle,Plsql,Odp.net,Oracle Ref游标只能与过程和函数一起使用,还是也可以与通过ODP.NET OracleCommand对象(包含在CommandText属性中作为字符串)发出的PL/SQL一起使用?这取决于您试图完成的任务 您当然可以从.Net或Java应用程序中执行匿名PL/SQL块,该应用程序内部使用REF游标。但是,由于匿名PL/SQL块不接受或返回参数,因此不能将在匿名PL/SQL块中打开的REF游标返回给调用应用程序 从应用程序体系结构的角度来看,我强烈主张,如果需要执行需要PL/SQL的处理,

Oracle Ref游标只能与过程和函数一起使用,还是也可以与通过ODP.NET OracleCommand对象(包含在CommandText属性中作为字符串)发出的PL/SQL一起使用?

这取决于您试图完成的任务

您当然可以从.Net或Java应用程序中执行匿名PL/SQL块,该应用程序内部使用
REF游标
。但是,由于匿名PL/SQL块不接受或返回参数,因此不能将在匿名PL/SQL块中打开的
REF游标
返回给调用应用程序


从应用程序体系结构的角度来看,我强烈主张,如果需要执行需要PL/SQL的处理,那么应该将该处理合并到包中并存储在数据库中的命名PL/SQL块(过程或函数)中。在PL/SQL中实现存储在数据库之外的逻辑通常是个坏主意。

过程和函数是PL/SQL。游标可用于任何Pl/SQL块,即
begin。。。结束是的,毫无疑问它们是PL/SQL,我只是想知道Ref游标是否被限制与它们一起使用,我相信你的评论的下半部分会回答这个问题。我对你的评论投了赞成票,因为它不允许我将其作为答案进行检查。我认为匿名PL/SQL可以通过ODP.NET中的输出绑定变量/参数返回数据,Ref游标不是这样吗?我可以理解,将其置于数据库之外是一个坏主意,不幸的是,这一决定不在我的掌握之中。@Paul-我认为使用
REF游标
不可能做到这一点。显然,我欢迎有人指出我知识上的一个缺口。似乎使用存储函数(例如,[])是可能的,但据我所知,你是对的,匿名PL/SQL是不可能的。对于稍后阅读本文的人来说,这是个好消息。在一个相关的问题中,@Juergen Hartelt刚刚演示了如何使用Ref游标作为输出绑定变量/参数,并通过C#with ODP.NET()使用匿名PL/SQL命令。