PLSQL的SELECT FOR UPDATE游标

PLSQL的SELECT FOR UPDATE游标,第1张

在多数情况下 提取循环中所完成的处理都会修改由游标检查出的行 PL/SQL提供了进行这样处理的一种语法 这种语法包括两部分——在游标声明部分的FOR UPDATE子句和在UPDATE或DELETE语句中的WHERE CURRENT OF 子句 通常 SELECT *** 作将不会对正处理的行执行任何锁定设置 这使得连接到该数据库的其他会话可以改变正在选择的数据 但是 结果集仍然是一致性的 当确定了活动集以后 在执行OPEN的时刻 ORACLE会截取下该表的一个快照 在此时刻以前所提交的任何更改 *** 作都会在活动集中反映出来 在此时刻以后所进行的任何更改 *** 作 即使已经提交了它们 都不会被反映出来 除非将该游标重新打开 但是使用FOR UPDATE子句 在OPEN返回以前的活动集的相应行上会加上互斥锁 这些锁会避免其他的会话对活动集中的行进行更改 直到整个事务被提交为止 示例 DECLARE CURSOR C_CUR IS SELECT FROM STUDENDS FOR UPDATE OF XM; BEGIN OPEN C_CUR; WHILE C_CUR%FOUND LOOP UPDATE STUDENDS SET XM= AA ||XM WHERE CURRENT OF C_CUR; END LOOP; CLOSE C_CUR; MIT; END; 需要注意的是 UPDATE语句仅更新在游标声明的FOR UPDATE子句处列出的列 如果没有列出任何列 那么所有的列都可以更新 示例中的MIT是在提取循环完成以后才完成的 因为MIT将释放由该会话持有的所有锁 因为FOR UPDATE子句获得了锁 所以MIT将释放这些锁 当锁释放了 该游标就无效了 所以后继的提取 *** 作都将返回ORACLE错误 lishixinzhi/Article/program/Oracle/201311/18946

游标在处理数据中提供了在结果集中一次一行或者多行前进或向后浏览数据的能力,可以把游标当作一个指针,它可以指定结果中的任何位置,然后允许用户对指定位置的数据进行处理。

游标实际上是一种能从包括多条数据记录的结果集中每次提取一条记录的机制。游标可以被看作是一个查询结果集和结果集中指向特定记录的游标位置组成的一个临时文件,提供了在查询结果集中向前或向后浏览数据、处理结果集中数据的能力。

有了游标,用户就可以访问结果集中任意一行数据,在将游标放置到某行之后,可以在该行或从该位置的行块上执行 *** 作。

扩展资料

游标的类型

MS SQL SERVER 支持三种类型的游标:Transact_SQL 游标,API服务器游标和客户游标。

1、Transact_SQL 游标

Transact_SQL 游标由DECLARE CURSOR 语法定义、主要用在Transact_SQL脚本、存储过程和触发器中。Transact_SQL 游标主要用在服务器上,由从客户端发送给服务器的Transact_SQL 语句或是批处理、存储过程、触发器中的Transact_SQL 进行管理。

2、API游标

API 游标支持在OLE DB, ODBC 以及DB_library 中使用游标函数,主要用在服务器上。每一次客户端应用程序调用API 游标函数,MS SQL SEVER 的OLE DB 提供者、ODBC驱动器或DB_library 的动态链接库都会将这些客户请求传送给服务器以对API游标进行处理。

3、客户游标

客户游标主要是当在客户机上缓存结果集时才使用。在客户游标中,有一个缺省的结果集被用来在客户机上缓存整个结果集。客户游标仅支持静态游标而非动态游标。由于API 游标和Transact-SQL 游标使用在服务器端,所以被称为服务器游标,也被称为后台游标,而客户端游标被称为前台游标。

参考资料来源:百度百科—游标

以上就是关于PL/SQL的SELECT FOR UPDATE游标全部的内容,包括:PL/SQL的SELECT FOR UPDATE游标、数据库中游标的作用是什么、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9822625.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存