首页 > 数据库 >SQLServer游标

SQLServer游标

时间:2024-06-24 12:57:16浏览次数:28  
标签:search -- SQLServer 游标 test 数据 fetch

一.游标的作用:

定位到结果集中的某一行(结果集:在完成了数据库的操作之后出现的所有的结果的集合)

二.游标分为三类

1.静态游标(static):操作游标时即使数据发生变化,游标中的数据也不会发生变化

2.动态游标(dynamic):操作游标时若数据发生变化,则游标中数据同样改变

3.键集驱动游标(keyset):在操作游标时,被标记的列,其他列和游标中的数据改变,游标中的数据不变

三.游标的使用

1.创建游标

语法为:

declare 游标名 cursor scroll for select 创建游标的列名 from 创建游标的表名

难理解部分的解释:

cursor为游标,表示我们将要创建的数据的类型

scroll为一个可选参数,表示是否能够滚动使用游标,若不加上此参数则游标只能向下移动

2.打开游标

语法为:

open 游标名

3.关闭游标

语法为:

close 游标名

4.删除游标

语法为:

deallocate 游标名

5.使用游标提取数据

例如:

--提取第一行的数据
fetch first from test 
--test是我创建的游标的名字

--提取最后一行的数据
fetch last from test 

--提取第二行的数据
fetch absolute 2 from test 

--提取当前游标所在行下移两行的数据
fetch relative 2 from test 

--提取当前游标所在行下移一行的数据
fetch next from test

--提取当前游标所在行上移一行的数据
fetch prior from test  

6.游标的具体使用实例

(1).使用游标提取数据之后将数据存入变量之中,用于查询该列信息

declare @search varchar(50) --创建一个类型为varchar,大小为50,名字为search的变量
fetch absolute 2 from test into @search --将第二行的数据提取到search变量之中
select * from Student where StuId = @search --在Student表中查找与存入变量之中的数据相同的具体数据

(2).遍历游标

declare @search varchar(50) --定义一个类型为varchar,大小为50,名字为search的变量
fetch absolute 1 from test into @search --提取出第一行的数据到search变量中进行存储
--在我们使用游标时需要注意有一全局变量名字为fetch_status表示数据是否提取成功,若为0,则表示提取成功,若为-1,则表示提取失败
while @@fetch_status = 0 使用while循环进行遍历
    begin 
        print @search --打印提取出的数据
        fetch next from test into @search --再提取下一行的数据
    end

(3).使用游标进行数据的修改和删除

--修改数据
fetch absolute 3 from test --提取出第三行的游标数据
update Student set Score = 100 where current of test --修改游标所在行的学生的成绩数据为100

--删除数据
fetch absolute 3 from test --提取出第三行的游标数据
delete from student where current of test --删除游标所在行的学生数据

7.指向多列数据的游标

(1).创建语法:

declare 游标名 cursor scroll for select 列名1,列名2...列名n from 表名

(2).使用

创建与列数相同数量的变量数,使用不同的变量对游标进行操作

标签:search,--,SQLServer,游标,test,数据,fetch
From: https://blog.csdn.net/NaZiMeKiY/article/details/138368916

相关文章

  • python连接mysql、sqlserver、oracle、postgresql数据库进行封装
    python连接mysql、sqlserver、oracle、postgresql数据库进行封装python连接mysql、sqlserver、oracle、postgresql数据库进行封装详解一、引言二、python连接MySQL数据库进行封装三、python连接SQLServer数据库进行封装四、Python连接Oracle数据库进行封装五、Python连......
  • SqlserverCDCcrudSourceSink mssql数据实时同步demo
    packageorg.hu.fk.datastream_connector;importcom.alibaba.fastjson.JSON;importcom.alibaba.fastjson.JSONObject;importcom.ververica.cdc.connectors.base.options.StartupOptions;importcom.ververica.cdc.connectors.shaded.org.apache.kafka.connect.data.Fie......
  • SqlserverCDCSourceSink
    此处调用官方sinkdemo,更新和删除逻辑还需要再判断实现。importcom.ververica.cdc.connectors.base.options.StartupOptions;importcom.ververica.cdc.connectors.sqlserver.SqlServerSource;importcom.ververica.cdc.connectors.sqlserver.source.SqlServerSourceBuilder;......
  • SqlserverCDCSource DataStream方式
    org.apache.flink没有jar包,要换为com.ververica.cdc2.com.ververica.cdc最新的也只有3.0.1,3.1.1的没有主要mvnrepository仓库没找到如下是单并行度和多并行度的demo==============================================================================================......
  • SQLServer CDC Connector
    SQLServerCDCConnector#TheSQLServerCDCconnectorallowsforreadingsnapshotdataandincrementaldatafromSQLServerdatabase.ThisdocumentdescribeshowtosetuptheSQLServerCDCconnectortorunSQLqueriesagainstSQLServerdatabases.Dependenc......
  • debezium+kafka实现sqlserver数据同步(debezium-connector-sqlserver)
    SELECTCASEWHENdss.[status]=4THEN1ELSE0ENDASisRunningFROM[#db].sys.dm_server_servicesdssWHEREdss.[servicename]LIKEN'SQLServerAgent(%'1.情景展示在企业当中,往往会存在不同数据库之间的表的数据需要保持一致的情况(数据同步)。如何将A库a表的数据......
  • MySQL 游标遍历每一行数据做处理。
     delimiter$$--分隔标记CREATEPROCEDUREprocess_test()begin--声明变量declareSuoshuQY_pvarchar(255);declaredoneint;declarecurcursorforSELECTSuoshuQYasSuoshuQY_pFROMdiy_cabinet_listWHEREIsDeleted=0;declareco......
  • sql server日期格式 sqlserver的日期格式
    常用转换格式yyyy-mm-ddThh:mm:ssSELECTCONVERT(VARCHAR(20),GETDATE(),20)→2021-06-2716:58:00yyyy-mm-dd(SELECTCONVERT(VARCHAR(20),GETDATE(),23)→2021-06-27Thh:mm:ssSELECTCONVERT(VARCHAR(20),GETDATE(),24)→17:00:20yyyymmddSELECTCONVERT(VARCHAR(20),GETD......
  • 深入探究MySQL游标(Cursor)
    前言MySQL游标(Cursor)是MySQL中用于处理查询结果的一种机制。游标允许我们在查询结果集中逐行处理数据,而不是一次性获取所有数据。这对于处理大量数据非常有用,因为它可以减少内存消耗并提高性能。在MySQL中,游标主要用于存储过程和函数。一、游标的概念游标是一个数据库对......
  • sqlserver判断字段值是否存在某个字符
    原文链接:https://blog.csdn.net/qq_27033067/article/details/102950735写SQL语句我们会遇到需要判断字段值中是否包含某个字符串,虽然SQLSERVER中并没有像C#提供了Contains函数,但SQLSERVER中提供了CHAEINDX函数,它是找到字符(char)的位置(index),通过查找字符所在的位置,就可以判断是......