当前位置:  开发笔记 > 数据库 > 正文

Oracle中显式和隐式游标之间有什么区别?

如何解决《Oracle中显式和隐式游标之间有什么区别?》经验,为你挑选了2个好方法。

我在PL/SQL中的光标术语上有点生疏.谁知道这个?



1> Sten Vesterl..:

隐式游标是Oracle在您执行查询时"自动"为您创建的游标.编码更简单,但受到影响

效率低下(ANSI标准规定必须提取两次才能检查是否有多条记录)

容易受到数据错误的影响(如果你得到两行,它会引发一个TOO_MANY_ROWS异常)

SELECT col INTO var FROM table WHERE something;

显式游标是您自己创建的游标.它需要更多代码,但可以提供更多控制 - 例如,如果您只想要第一条记录而不关心是否有其他记录,则可以只是打开 - 获取 - 关闭.

DECLARE   
  CURSOR cur IS SELECT col FROM table WHERE something; 
BEGIN
  OPEN cur;
  FETCH cur INTO var;
  CLOSE cur;
END;


-1因为效率低的原因是错误的,因为在我看来,一些7.x版本和数据错误的漏洞是一件好事.如果您期望一行,但是您得到两行,则非常希望您被TOO_MANY_ROWS异常警告.
这个答案是好的,我会投票给它,除非它说隐式游标是低效的,这是错误的 - 在它们合适的情况下,它们通常比显式游标更有效!

2> stjohnroe..:

显式游标在声明块中定义如下:

DECLARE 
CURSOR cur IS 
  SELECT columns FROM table WHERE condition;
BEGIN
...

隐式游标直接在代码块中实现:

...
BEGIN
   SELECT columns INTO variables FROM table where condition;
END;
...

推荐阅读
小白也坚强_177
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有