显式游标与隐式游标
当涉及到数据库时,游标是一种控制结构,它允许遍历数据库中的记录。游标提供了一种为sqlselect语句指定名称的机制,然后可以使用它来操作该SQL语句中的信息。当没有显式定义的游标时,每次在PL/SQL中发出Select语句时,都会自动创建并使用隐式游标。顾名思义,显式游标是由开发人员显式定义的。在PL/SQL中,显式游标实际上是使用关键字cursor定义的命名查询。
什么是隐式游标?
每次发出select语句时,Oracle都会自动创建并使用隐式游标。如果使用隐式游标,数据库管理系统(DBMS)将自动执行打开、获取和关闭操作。隐式游标只能与返回单行的SQL语句一起使用。如果SQL语句返回多行,则使用隐式游标将导致错误。隐式游标自动与每个数据操作语言(DML)语句关联,即INSERT、UPDATE和DELETE语句。另外,隐式游标用于处理SELECTINTO语句。当使用隐式游标获取数据时,当SQL语句未返回任何数据时,将引发NO_data \u FOUND异常。此外,当SQL语句返回多行时,隐式游标可能引发过多的“多行”异常。
什么是显式游标?
如前所述,显式游标是使用名称定义的查询。显式游标可以看作是指向一组记录的指针,并且该指针可以在记录集中向前移动。显式游标为用户提供对打开、关闭和获取数据的完全控制。此外,可以使用显式游标获取多行。显式游标也可以像任何函数或过程一样接受参数,这样每次执行游标时都可以更改游标中的变量。此外,显式游标允许您将整行提取到PL/SQL记录变量中。当需要使用显式名称声明它时,需要先使用显式名称。可以使用给Cursor的名称来访问Cursor属性。声明后,需要先打开游标。然后就可以开始取数了。如果需要获取多行,则需要在循环中执行获取操作。最后,需要关闭光标。
显式游标与隐式游标的区别