【问题标题】:Which are all implicit and explicit cursor here?这里都是隐式游标和显式游标?
【发布时间】:2019-09-24 13:15:55
【问题描述】:

在区分隐式游标和显式游标时,我感到非常困惑……请告诉我下面给出的都是隐式游标和显式游标。如果还有更多,请也提及...

提前谢谢...!

1)SELECT column_nm
   INTO v_a
  FROM table;

2)BEGIN
   FOR i IN cursor_name
   LOOP
    --some logic
   END LOOP;
  END;

3)BEGIN
   FOR i IN 1..10
   LOOP
    --some logic
   END LOOP;
  END;

4)BEGIN
   FOR i IN (SELECT * FROM employees WHERE 1=2)
   LOOP
    --some logic
   END LOOP;
  END;

5)BEGIN
   OPEN cursor_name...
    FETCH...INTO...
     EXIT WHEN...
     --some logic
   CLOSE cursor_name;
  END;
  / 

【问题讨论】:

  • 2+5 是显式的,1+4 是隐式的。有什么区别,可以看here
  • @hotfix 为什么第4个被称为隐式光标...是否有任何内存空间要存储。
  • 因为你没有定义游标,pl/sql引擎会为你做。它还为您处理所有操作,例如打开、关闭、获取。并且您不能像显式光标一样使用名称来引用它
  • 好的..但是当我为第 4 个像 SQL%ROWCOUNT 定义游标属性时,它将不起作用..现在我的问题是'Implicit cursor work with attributes?'

标签: oracle plsql


【解决方案1】:

作为@hotfix 注释,显式光标是当您将光标名称定义为cursor_name(2 和5)

3 部分使用简单的counter 而不是光标

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多