search
游标cursorJun 07, 2016 pm 03:27 PM
cursorserversqldeal withdatacursor

SQL Server 用于处理数据集合。但很多时候,只需要处理一行数据。游标功能可以使我们获取一个数据行集,然后一次处理一行数据。 游标有5个组成部分。DECLARE用于定义一个Select语句,该语句生成游标中数据行。Open使Select语句执行,并将结果导入内存结构中

SQL Server 用于处理数据集合。但很多时候,只需要处理一行数据。游标功能可以使我们获取一个数据行集,然后一次处理一行数据。

游标有5个组成部分。DECLARE用于定义一个Select语句,该语句生成游标中数据行。Open使Select语句执行,并将结果导入内存结构中。Fetch用于从游标中一次获取一行。Close则用来关闭游标操作。Deallocate用于删除游标,然后重新分配之前存储游标结果集非让内存结构。

(Notice:如果写的游标在来自游标中每一行上的操作都相同,建议使用更高效的基于数据集的操作。)

声明游标的通用语法格式如下:

    Declare cursor_name CURSOR [ LOCAL | REMOTE ] 
               [ STATIC| KEYSET | DYNAMIC | FAST_FORWARD ]
               [ READ_ONLY | SCROLL_LOCKS | OPTIMISTIC ]
               [TYPE_WARNING]
               FOR select_statement
接下来的语句展示了声明相同游标的三种不同的方法:
    Declare curproducts CURSOR FAST_FORWARD FOR
               SELECT ProductID, ProductName, ListPrice FROM Products.Product
    GO
    Declare curproducts CURSOR READ_ONLY FOR
               SELECT ProductID, ProductName, ListPrice FROM Products.Product
    GO
    Declare curproducts CURSOR  FOR
               SELECT ProductID, ProductName, ListPrice FROM Products.Product
    FOR READ ONLY
    GO
一旦游标被声明,就可以发布OPEN命令,就可以发布OPEN命令以执行SELECT语句。
    OPEN curproducts
然后就可以用FETCH语句从游标中的行获取数据。首次执行FETCH命令时,指针位于游标结果集的第一行数据处,再执行一次,指针边在游标中前进一行,直至超出游标结果集的范围。每次执行FETCH语句还会在全局变量@@FETCH_STATUS中放置一个值。可以使用WHILE循环来遍历游标,循环获取游标中的行。只要@@FETCH_STATUS为0,都可以使用WHILE循环。
    DECLARE @ProductID INT,
                   @ProductName VARCHAR(50),
                   @ListPrice MONEY
    DECLARE curproducts CURSOR FOR
        select ProductID,ProductName,ListPrice from Products.Product
    FOR READ ONLY
    OPEN curproducts
    FETCH curproducts into @ProductID,@ProductName,@ListPrice
    WHILE @@FETCH_STATUS = 0
    BEGIN
        Select @ProductID,@ProductName,@ListPrice
        FETCH curproducts into @ProductID,@ProductName,@ListPrice
    END
    CLOSE curproducts
    DEALLOCATE curproducts
Statement
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
SQL Server使用CROSS APPLY与OUTER APPLY实现连接查询SQL Server使用CROSS APPLY与OUTER APPLY实现连接查询Aug 26, 2022 pm 02:07 PM

本篇文章给大家带来了关于SQL的相关知识,其中主要介绍了SQL Server使用CROSS APPLY与OUTER APPLY实现连接查询的方法,文中通过示例代码介绍的非常详细,下面一起来看一下,希望对大家有帮助。

SQL Server解析/操作Json格式字段数据的方法实例SQL Server解析/操作Json格式字段数据的方法实例Aug 29, 2022 pm 12:00 PM

本篇文章给大家带来了关于SQL server的相关知识,其中主要介绍了SQL SERVER没有自带的解析json函数,需要自建一个函数(表值函数),下面介绍关于SQL Server解析/操作Json格式字段数据的相关资料,希望对大家有帮助。

聊聊优化sql中order By语句的方法聊聊优化sql中order By语句的方法Sep 27, 2022 pm 01:45 PM

如何优化sql中的orderBy语句?下面本篇文章给大家介绍一下优化sql中orderBy语句的方法,具有很好的参考价值,希望对大家有所帮助。

Monaco Editor如何实现SQL和Java代码提示?Monaco Editor如何实现SQL和Java代码提示?May 07, 2023 pm 10:13 PM

monacoeditor创建//创建和设置值if(!this.monacoEditor){this.monacoEditor=monaco.editor.create(this._node,{value:value||code,language:language,...options});this.monacoEditor.onDidChangeModelContent(e=>{constvalue=this.monacoEditor.getValue();//使value和其值保持一致i

一文搞懂SQL中的开窗函数一文搞懂SQL中的开窗函数Sep 02, 2022 pm 04:55 PM

本篇文章给大家带来了关于SQL server的相关知识,开窗函数也叫分析函数有两类,一类是聚合开窗函数,一类是排序开窗函数,下面这篇文章主要给大家介绍了关于SQL中开窗函数的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下。

如何使用exp进行SQL报错注入如何使用exp进行SQL报错注入May 12, 2023 am 10:16 AM

0x01前言概述小编又在MySQL中发现了一个Double型数据溢出。当我们拿到MySQL里的函数时,小编比较感兴趣的是其中的数学函数,它们也应该包含一些数据类型来保存数值。所以小编就跑去测试看哪些函数会出现溢出错误。然后小编发现,当传递一个大于709的值时,函数exp()就会引起一个溢出错误。mysql>selectexp(709);+-----------------------+|exp(709)|+-----------------------+|8.218407461554972

Monaco Editor怎么实现SQL和Java代码提示Monaco Editor怎么实现SQL和Java代码提示May 11, 2023 pm 05:31 PM

monacoeditor创建//创建和设置值if(!this.monacoEditor){this.monacoEditor=monaco.editor.create(this._node,{value:value||code,language:language,...options});this.monacoEditor.onDidChangeModelContent(e=>{constvalue=this.monacoEditor.getValue();//使value和其值保持一致i

如何在Python中根据运行时修改业务SQL代码?如何在Python中根据运行时修改业务SQL代码?May 08, 2023 pm 02:22 PM

1.缘起最近项目在准备搞SASS化,SASS化有一个特点就是多租户,且每个租户之间的数据都要隔离,对于数据库的隔离方案常见的有数据库隔离,表隔离,字段隔离,目前我只用到表隔离和字段隔离(数据库隔离的原理也是差不多)。对于字段隔离比较简单,就是查询条件不同而已,比如像下面的SQL查询:SELECT*FROMt_demoWHEREtenant_id='xxx'ANDis_del=0但是为了严谨,需求上需要在执行SQL之前检查对应的表是否带上tenant_id的查询字段

See all articles

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
2 weeks agoBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Best Graphic Settings
2 weeks agoBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. How to Fix Audio if You Can't Hear Anyone
2 weeks agoBy尊渡假赌尊渡假赌尊渡假赌

Hot Tools

Atom editor mac version download

Atom editor mac version download

The most popular open source editor

DVWA

DVWA

Damn Vulnerable Web App (DVWA) is a PHP/MySQL web application that is very vulnerable. Its main goals are to be an aid for security professionals to test their skills and tools in a legal environment, to help web developers better understand the process of securing web applications, and to help teachers/students teach/learn in a classroom environment Web application security. The goal of DVWA is to practice some of the most common web vulnerabilities through a simple and straightforward interface, with varying degrees of difficulty. Please note that this software

VSCode Windows 64-bit Download

VSCode Windows 64-bit Download

A free and powerful IDE editor launched by Microsoft

SecLists

SecLists

SecLists is the ultimate security tester's companion. It is a collection of various types of lists that are frequently used during security assessments, all in one place. SecLists helps make security testing more efficient and productive by conveniently providing all the lists a security tester might need. List types include usernames, passwords, URLs, fuzzing payloads, sensitive data patterns, web shells, and more. The tester can simply pull this repository onto a new test machine and he will have access to every type of list he needs.

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Integrate Eclipse with SAP NetWeaver application server.