首页 数据库 mysql教程 数据库中的书签游标

数据库中的书签游标

Jun 07, 2016 pm 03:00 PM
书签 引入 情况 数据库 标的 游标 结果 解决

游标的引入 为解决在多条结果集的情况下,要逐一读取每一条记录所带来的麻烦。游标为我们提供了一种较好的解决方案。 游标的组成 每一个游标必须有四个组成部分。且必须符合下面的顺序。 1,declare游标(用来声明游标) 2,open游标 3,从一个游标中fetch信


游标的引入

       为解决在多条结果集的情况下,要逐一读取每一条记录所带来的麻烦。游标为我们提供了一种较好的解决方案。

游标的组成

       每一个游标必须有四个组成部分。且必须符合下面的顺序。

1,             declare游标(用来声明游标)

2,             open游标

3,             从一个游标中fetch信息

4,             Close或deallocate游标

游标的声明

       声明游标主要包含以下内容:游标名字,数据来源表和列,选取条件,属性仅读或可修改

       其语法格式如下:

       Declare 游标名称 cursor

       [local|glocal]                 指定游标的作用域是局部的还是全局的

       [forward_only|scroll]    选择forward_only则游标只能从第一行滚动到最后一行。Scroll表明所有的提取操作都可用,如果不使用该保留字则只能进行next操作。

       [read_only]                  表明不允许游标内的数据被更新

       For 选择语句               是定义结果集的select语句,应该注意的是在游标中不能使用compute等语句。

       [for[update[of 字段名称1,字段名称2…]]]   定义在游标中可被修改的列

打开游标

       游标声明以后,如果要从游标中读取数据,必须打开游标,使用open命令,语法格式如下:

Open 游标名称

读取游标中的数据——fetch

       Fetch

       [[next|prior|first|last|absolute{n|@nvar}|relative{n|@nvar}]from]cursor_name

       [into  @variable_name1,@variable_name2…]

       Next:返回结果集中当前行的下一行,并增加当前行数为返回行行数,如果fetchnext是第一次读取游标中数据则返回结果集中的是第一行而不是第二行

       Prior:返回结果集中当前行的前一行并减少当前行数为返回行行数。如果fetchprior是第一次读取游标中数据则无数据记录返回并把游标位置设为第一行。

       First:返回游标中第一行

       Last:返回游标中的最后一行

       Absolute{n|@nvar}:如果n或者@nvar为正数,则表示从游标中返回的数据行数。如果n@nvar为负数,则返回游标内从最后一行数据算起的第n@nvar行数据。

n@nvar超过游标的数据子集范畴,则@@fetch_stars返回-1。在该情况下,如果n@nvar为负数,则执行fetchnext命令会得到第一行数据,如果为正值,执行fetch prior命令则会得到最后一行数据。n@nvar可以是一固定值,也可以是一smallint,tinyintint类型的变量。

       Relative {n|@nvar}:n@nvar为正数,则读取游标当前位置起向后的第n@nvar行数据。如果为负数,则读取游标当前位置起向前的第n或@nvar行数据。若n@nvar超过游标的数据子集范畴,则@@fetch_stars返回-1.在该情况下,如果n@nvar为负数,则执行fetchnext命令则会得到第一行数据,如果为正值,执行fetch prior命令则会得到最后一行数据。n@nvar可以是一固定值,也可以是一smallint,tinyintint类型的变量。

       Into@variable_name[,…n]:允许将使用fetch命令读取的数据存放在多个变量中,在变量行中的每个变量必须与游标结果集中相应的列相对应,每一变量的数据类型也要与游标中数据列的数据类型相匹配。

检查游标状态

       @@fetch_status:全局变量,返回上次执行fetch命令的状态。在每次用fetch从游标中读取数据时,都应检查该变量以确定上次fetch操作是否成功,来决定如何进行下一步处理。@@fetch_status变量有三种不同的返回值。

0:表示成功取出了一行。

-1:表示未取到数据,因为所要求游标位置超出了结果集

-2:表示返回的行已经不再是结果集的一个成员。这种情况只有在游标不是insensitive的情况下出现,即其他进程已删除了行或改变了游标打开的关键值

编辑当前游标行

       进行定位修改或删除游标中数据的语法规则为:

Update table_name                     updatedelete的表名

Set column_name1={expression1|null(select_statement)}

[,column_name2={expression2|null(select_statement)}]     update的列名

Where current of cursor_name

Delete from table_name

Where current of cursor_name    游标名

举例:更新authors表中的au_lnameau_fname

        首先声明一个游标

        Declare authors_cur scroll cursor

        For

        Select*from authors

        for update of au_lname,au_fname

        更新

        Update authors

        Set au_lname=’china’,au_fname=’asia’

        Where current of authors_cur

关闭游标

       使用close命令关闭游标,在处理完游标中数据之后,必须关闭游标来释放数据结果集合定位于数据记录上的锁,close语句关闭游标但不释放游标占用的数据结构。语法规则为:close游标名称

释放游标

       在使用游标时,各种针对游标的操作或者引用游标名或者引用指向游标的游标变量,当close命令关闭游标时并没有释放游标占用的数据结构,因此常使用deallocate命令删除掉游标的游标名或游标变量之间的联系,并且释放游标占用的所用系统资源。语法:deallocate游标名称

注:当若真的完成释放游标的操作,再次使用时,则需重新声明



本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
2 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
2 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

Go语言如何实现数据库的增删改查操作? Go语言如何实现数据库的增删改查操作? Mar 27, 2024 pm 09:39 PM

Go语言是一种高效、简洁且易于学习的编程语言,因其在并发编程和网络编程方面的优势而备受开发者青睐。在实际开发中,数据库操作是不可或缺的一部分,本文将介绍如何使用Go语言实现数据库的增删改查操作。在Go语言中,我们通常使用第三方库来操作数据库,比如常用的sql包、gorm等。这里以sql包为例介绍如何实现数据库的增删改查操作。假设我们使用的是MySQL数据库。

Hibernate 如何实现多态映射? Hibernate 如何实现多态映射? Apr 17, 2024 pm 12:09 PM

Hibernate多态映射可映射继承类到数据库,提供以下映射类型:joined-subclass:为子类创建单独表,包含父类所有列。table-per-class:为子类创建单独表,仅包含子类特有列。union-subclass:类似joined-subclass,但父类表联合所有子类列。

iOS 18 新增'已恢复”相册功能 可找回丢失或损坏的照片 iOS 18 新增'已恢复”相册功能 可找回丢失或损坏的照片 Jul 18, 2024 am 05:48 AM

苹果公司最新发布的iOS18、iPadOS18以及macOSSequoia系统为Photos应用增添了一项重要功能,旨在帮助用户轻松恢复因各种原因丢失或损坏的照片和视频。这项新功能在Photos应用的"工具"部分引入了一个名为"已恢复"的相册,当用户设备中存在未纳入其照片库的图片或视频时,该相册将自动显示。"已恢复"相册的出现为因数据库损坏、相机应用未正确保存至照片库或第三方应用管理照片库时照片和视频丢失提供了解决方案。用户只需简单几步

深入解析HTML如何读取数据库 深入解析HTML如何读取数据库 Apr 09, 2024 pm 12:36 PM

HTML无法直接读取数据库,但可以通过JavaScript和AJAX实现。其步骤包括建立数据库连接、发送查询、处理响应和更新页面。本文提供了利用JavaScript、AJAX和PHP来从MySQL数据库读取数据的实战示例,展示了如何在HTML页面中动态显示查询结果。该示例使用XMLHttpRequest建立数据库连接,发送查询并处理响应,从而将数据填充到页面元素中,实现了HTML读取数据库的功能。

简单步骤:解决VSCode中文界面无法显示问题 简单步骤:解决VSCode中文界面无法显示问题 Mar 25, 2024 am 11:57 AM

我的步骤如下:解决VSCode中文界面无法显示问题有人在安装VSCode后发现,无论设置什么语言,界面总是显示为方框或乱码,非常困扰。这往往是由于系统缺少语言支持包或字体问题导致的。下面我将分享一些简单的解决步骤,帮助您修复VSCode中文界面无法显示的问题。步骤一:安装中文语言包首先,我们需要为VSCode安装中文语言包。打开VSCode,依次点击左下角的

在PHP中使用MySQLi建立数据库连接的详尽教程 在PHP中使用MySQLi建立数据库连接的详尽教程 Jun 04, 2024 pm 01:42 PM

如何在PHP中使用MySQLi建立数据库连接:包含MySQLi扩展(require_once)创建连接函数(functionconnect_to_db)调用连接函数($conn=connect_to_db())执行查询($result=$conn->query())关闭连接($conn->close())

如何在PHP中处理数据库连接错误 如何在PHP中处理数据库连接错误 Jun 05, 2024 pm 02:16 PM

PHP中处理数据库连接报错,可以使用以下步骤:使用mysqli_connect_errno()获取错误代码。使用mysqli_connect_error()获取错误消息。通过捕获并记录这些错误信息,可以轻松识别并解决数据库连接问题,确保应用程序的顺畅运行。

Win8电脑忘记密码怎么办?轻松解决! Win8电脑忘记密码怎么办?轻松解决! Mar 27, 2024 pm 05:12 PM

Win8电脑忘记密码怎么办?轻松解决!在日常生活中,我们经常会遇到忘记密码的情况,尤其是当密码是用于我们使用频率较高的电脑登录时,这样的情况更是常见。特别是对于使用Windows8操作系统的电脑用户来说,忘记密码可能会带来一些困扰,但事实上,忘记Win8电脑密码并不是一个难以解决的问题。在本文中,我们将介绍一些解决Win8电脑忘记密码的方法,帮助你轻松应对

See all articles