精华内容
下载资源
问答
  • 使用游标的SQL语句

    2021-03-31 16:35:23
    使用游标的SQL语句 必须使用游标的SQL语句有查询结果为多条记录的select语句,current形式的update和delete语句。 查询结果为多条记录的select语句 一般情况下,select语句查询结果为多条记录,因此需要使用游标机制...

    使用游标的SQL语句

    必须使用游标的SQL语句有查询结果为多条记录的select语句,current形式的update和delete语句。
    查询结果为多条记录的select语句
    一般情况下,select语句查询结果为多条记录,因此需要使用游标机制将多条记录一次一条的送主程序处理,从而把集合的操作转换为对单个记录的处理,使用游标的步骤为:
    1:说明游标
    用declare语句为一条select语句定义游标:
    exec SQL declare <游标名> cursor for <select语句>;
    定义游标仅仅是一条说明性语句,这时关系数据库管理系统并不执行select语句。
    2:打开游标
    用open语句将定义的游标打开。
    exec SQL open<游标名>;
    打开游标实际上是执行相应的select语句,把查询结果取到缓冲区,这时游标处于活动状态,指针指向查询结果集中的第一条记录。
    3:推进游标指针并取当前记录
    exec SQL fetch <游标名>
    into <主变量>[<指示变量>]…
    其中主变量必须与select语句中的目标列表达式具有一一对应关系。
    4:关闭游标
    用close语句关闭游标,释放结果集占用的缓冲区及其资源。
    exec SQL close <游标名>;

    exec为C语言前缀

    展开全文
  • 游标中检索出结果集,从中每次指向一条记录进行交互的机制。 作用 指定结果集中特定的位置。 基于当前的结果集位置检索或连续的几行。 在结果集的当前位置修改行中的数据。 对其他用户所做的数据...
  • 检索和关闭游标+检索游标+关闭游标

    千次阅读 2017-05-23 15:50:50
    1打开游标后,游标对应的select语句也就被执行了,如果想要获取结果集中的数据,就需要检索游标检索游标 1结果集中获取单行数据,并保存到定义的变量 语法fetch cursor_name into variable【,….】; ...

    游标的主要属性
    %found: 如果sql语句至少影响一行操作,返回true,否则返回false
    %notfound: 如果sql语句至少影响一行操作,返回false,否则返回true
    %isopen: 当游标打开时,返回true,关闭时返回false
    %rowcount: 返回sql语句受影响的行数

    检索和关闭游标
    1打开游标后,游标对应的select语句也就被执行了,如果想要获取结果集中的数据,就需要检索游标。

    检索游标
    1从结果集中获取单行数据,并保存到定义的变量中
    语法

    fetch cursor_name into variable【,….】;
    variable:存储结果集的单行数据变量,可以使用多个普通类型的变量,一对一的接受数据行中的列值。也可以使用%rowtype类型的变量或者自定义的记录类型变量,接收数据行中的所有值。

    关闭游标
    1释放游标中select语句的查询结果所占用的系统资源
    语法
    close cursor_name;

    案例loop 输出游标信息
    declare

    cursor stu_cursor(num number:=1)
    is
    select sage,sname from student where rownum=num;

    type stu is record(
    age student.sage%type,
    name student.sname%type
    );

    s stu;

    begin
    open stu_cursor(1);
    loop
    fetch stu_cursor into s;
    exit when stu_cursor%notfound;
    dbms_output.put_line(s.age||’———-‘||s.name);
    end loop;
    close stu_cursor;
    end;
    这里写图片描述

    案例for 输出游标信息

    declare

    cursor stu_cursor
    is
    select sage,sname from student where rownum=1;

    s stu_cursor%rowtype;

    begin
    for s in stu_cursor loop
    dbms_output.put_line(s.sage||’———-‘||s.sname);
    end loop;
    end;

    这里写图片描述

    展开全文
  • sql语句游标的写法

    2016-12-30 15:27:00
    当循环查找一张表的信息时,我们得写一张游标来对每条信息进行操作,具体格式如下 DECLARE @fitemid int DECLARE #point_cursor CURSORFORSELECT fitemid FROM ICStockBillEntry where finterid=1314 --每条信息...

    当循环查找一张表的信息时,我们得写一张游标来对每条信息进行操作,具体格式如下

     

    DECLARE @fitemid int

    DECLARE #point_cursor CURSOR
    FOR
    SELECT fitemid
    FROM ICStockBillEntry where finterid=1314     --每条信息从头到尾的写入
    OPEN #point_cursor
    FETCH NEXT FROM #point_cursor INTO @fitemid
    while @@fetch_status = 0
    BEGIN
    select @fitemid= from table          --具体的逻辑
    FETCH NEXT FROM #point_cursor INTO @fitemid
    END
    CLOSE #point_cursor
    DEALLOCATE #point_cursor

    转载于:https://www.cnblogs.com/xujiating/p/6237123.html

    展开全文
  • 8.2 使用SearchCursor检索要素类要素 与SearchCursor ()函数一同使用的with 语句用来创建、打开和关闭游标,因此,不需要再像使用ArcGIS 10 . 1 之前的版本那样手动释放游标锁定。传入SearchCu r sor()函数的第l...

    bb一句,原本不知道ArcPy的游标是什么意思,今天学习了一下,又学废了。教程在这里了,数据在文章最后。上传图片好麻烦,你们就自己打开数据看属性表吧

    8.2 使用SearchCursor检索要素类中要素

    与SearchCursor ()函数一同使用的with 语句用来创建、打开和关闭游标,因此,不需要再像使用ArcGIS 10 . 1 之前的版本那样手动释放游标锁定。传入SearchCu r sor()函数的第l 个参数是要素类,本节传入的是School s .shp 文件。第2 个参数是Python 元组,用于存储游标中返回的字段列表。为了提高游标的性能,最好的做法是在游标中限制字段的个数,只返回完成任务所需的字段。在这个例子中,指定返回Facility 和Name字段, SearchCursor 对象存储在名为cursor 的变量中。在with 语句块中,使用for 循环来遍历返回的学校,也使用了sorted ()函数对游标的内容进行排序。要访问某行中字段的值,只需要使用该字段的索引值来返回。在这个例子中,要返回Name 列的内容,它的索引值是l ,因为在返回的含有字段名称的元组中它是第2 项(索引值从0 开始〉。

    # coding=utf-8
    import arcpy.da
    # 设置工作空间
    arcpy.env.workspace = "C:/ArcpyBook/Ch8"
    # 使用with语句创建游标
    with arcpy.da.SearchCursor("Schools.shp",("Facility","Name")) as cursor:
        # 使用for循环遍历SearchCursor中的行,输出学校的等级和名称。注意要确保for循环缩进在with语句中
        for row in sorted(cursor):
            print("School name: " + row[0] + "  " + row[1])
    
    School name: ELEMENTARY SCHOOL  ALLAN
    School name: ELEMENTARY SCHOOL  ALLISON
    School name: ELEMENTARY SCHOOL  ANDREWS
    School name: ELEMENTARY SCHOOL  BARANOFF
    School name: ELEMENTARY SCHOOL  BARRINGTON
    School name: ELEMENTARY SCHOOL  BARTON CREEK
    ...
    

    8.3 使用where子句筛选记录

    默认情况下,当创建了一个SearchCursor 对象后,表或要素类中的所有行都将被返回。但是,在大多数情况下,需要限制返回的记录,可以在调用SearchCursor ()函数时,创建一个查询,将它作为参数传入where 子句来实现。本节将在8.2 节脚本的基础上添加一个where 子句来限制返回的记录。

    # coding=utf-8
    import arcpy.da
    # 设置工作空间
    arcpy.env.workspace = "C:/ArcpyBook/Ch8"
    # 使用with语句创建游标
    with arcpy.da.SearchCursor("Schools.shp",("Facility","Name"),'"FACILITY" = \'HIGH SCHOOL\'') as cursor:
        # 使用for循环遍历SearchCursor中的行,输出学校的等级和名称。注意要确保for循环缩进在with语句中
        for row in sorted(cursor):
            print("School name: " + row[0] + "  " + row[1])
    

    输出

    School name: HIGH SCHOOL  AKINS
    School name: HIGH SCHOOL  ALTERNATIVE LEARNING CENTER
    School name: HIGH SCHOOL  ANDERSON
    School name: HIGH SCHOOL  AUSTIN
    ...
    

    8.4 使用几何令牌改进游标性能

    为了改进游标的性能, ArcGJS 1 0.l 引入了geome町tokens (几何令牌〉,使用几何令牌可以只返回几何的一部分信息,而不是返回游标中的全部要素的几何信息。返回整个要素的几何信息会导致游标性能下降,因为需要返回大量数据,而只返回需要的特定的几何部分明显提高了游标的速度。令牌是作为字段列表中的一个字段被传入游标的构造函数的,其格式为SHAPE@<Part ofFeature to be Returned>。这个格式唯→例外的是OID @令牌,即要素对象的ID 。下面的代码示例用于返回要素的x、Y 坐标。

    with arcpy.da.SearchCursor(fc, (”SHAPE@XY”,” Facility”,”Name ”) ) as cursor:
    
    # coding=utf-8
    import arcpy.da
    import time
    # 设置工作空间
    arcpy.env.workspace = "C:/ArcpyBook/ch8"
    # 计算使用几何令牌执行代码的时间,添加以下代码,记录起始时间
    start = time.clock()
    # 使用with语句创建游标,返回每个要素的质心坐标和存储在PY_FULL_OW字段中的所有权信息
    with arcpy.da.SearchCursor("coa_parcels.shp",("PY_FULL_OW","SHAPE@XY")) as cursor:
        # 使用for循环遍历SearchCursor的每一行,输出土地所有者的名称和地理坐标,要确保for循环缩进在with语句下。
        for row in cursor:
            print("土地所有者:{0} 有一个位置{1}".format(row[0],row[1]))
    # 计算程序执行的时间并输出
    elapsed = (time.clock() - start)
    print("Execution time: " + str(elapsed))
    

    输出:

    ...
    土地所有者:CITY OF AUSTIN ATTN REAL ESTATE DIVISION 有一个位置(3110670.413783513, 10070800.960865)
    土地所有者:CITY OF AUSTIN 有一个位置(3143925.0013213265, 10029388.97419636)
    土地所有者:CITY OF AUSTIN % DOROTHY NELL ANDERSON ATTN BARRY LEE ANDERSON 有一个位置(3134432.983822767, 10072192.047894118)
    Execution time: 1.0015463
    

    8.5 使用InserCursor插入行

    lstfires 变垦是一个包含所有wildfires数据的列表, wildfires 数据存储在逗号分隔的文本文件中。使用for 循环遍历记录的每一行,并将每个单独的记录插入到fire 变量中。for 循环中有一个if 语句用于跳过文件的第l 行记录,该行记录为表头。正如前文所述,首先,将vals 列表中的纬度、经度和置信度值分别赋给latitude 、longitude 不JI confid 变量,其次按照之前定义InsertCursor 的顺序将这些数值存储在一个名为主owValue 的新列表变量中, 所以,经纬度应该放置在首位, 其后是置信度值。然后调月~ I n sertCursor 对象的i n sertRow ()函数,传入新的rowValue 变革:。最后输出指示脚l本ill度的消息,井创建except 和lfinally i吾句块来处理错误并关闭文本文件。在finally 语句块中添加file . close ()方法,这样能确保即使在前面的try 语句块中出现错误JI才, 也能够关闭文件。

    代码

    # coding=utf-8
    import arcpy
    arcpy.env.workspace = r"C:\ArcpyBook\Ch8\WildfireData\WildlandFires.mdb"
    # 打开文本文件,将所有的行读入列表中
    f = open(r"C:\ArcpyBook\Ch8\WildfireData\NorthAmericaWildfires_2007275.txt","r")
    lstFires = f.readlines()
    try:
        # 使用with语句创建InsertCursor对象
        with arcpy.da.InsertCursor("FireIncidents",("SHAPE@XY","CONFIDENCEVALUE")) as cur:
            # 创建一个计数器变量,用于显示脚本的进度
            cntr = 1
            for fire in lstFires:
                if 'Latitude' in fire:
                    continue
                vals = fire.split(",")
                latitude = float(vals[0])
                longitude = float(vals[1])
                confid = int(vals[2])
                rowValue = [(longitude,latitude),confid]
                cur.insertRow(rowValue)
                print("Record number " + str(cntr) + "written to feature class")
                cntr = cntr + 1
    except Exception as e:
        print(e.message)
    finally:
        f.close()
    

    输出:

    Record number 405written to feature class
    Record number 406written to feature class
    Record number 407written to feature class
    Record number 408written to feature class
    Record number 409written to feature class
    ...
    

    8.6 使用UpdateCursor更新行

    UpdateCursor ()函数可用于更新或删除表或要索类中的行。返回的游标将会锁定数据, 如果在with 语句中使用游标,则会自动释放数据锁定。调用该函数将返回UpdateCursor 对象。UpdateCursor 对象将会锁定要编辅或删除的数据, 如果在with 语句中使用游标,数据处理完成后将会自动释放前:标。但在ArcGIS IO . I 之前的版本中, 游标需要使用Python的del 语句手I;IJ释放。-且获得一个UpdateCursor 实例, 就可以调用UpdateCursor ()
    函数来更新表或要素类的记录, 也可以调用deleteRow ( )方法来删除一行记录。本节将编写脚本来更新Fire Incidents 要素类巾的每个要素, 使用UpdateCursor把poor 、fa i r 、good 或excellent 赋值给新的字段,新宇段是对置信度值的进一步描述。更新记录之前, 需要将新宁段添加到Fireincidents 要素类中。

    代码

    # coding=utf-8
    import arcpy
    arcpy.env.workspace = r"C:\ArcpyBook\Ch8\WildfireData\WildlandFires.mdb"
    try:
        # 在FireIncidents要素类中添加名为CONDFID_RATING的新字段
        arcpy.AddField_management("FireIncidents","CONFID_RATING","TEXT","10")
        print("CONFID_RATING field added to FireIncidents")
        with arcpy.da.UpdateCursor("FireIncidents",("CONFIDENCEVALUE","CONFID_RATING")) as cursor:
            # 创建一个计数器变量,用来输出脚本的进度
            cntr = 1
            # 循环FireIncidents要素类的每一行,并依据以下准则更新CONFID_RATING字段
            # 置信度(0~40) = POOR
            # 置信度(41~60) = FAIR
            # 置信度(61~85) = GOOD
            # 置信度(86~100) = EXCELLENT
            for row in cursor:
                # 更新CONFID_RATING字段
                if row[0] <= 40:
                    row[1] = 'POOR'
                elif row[0] > 40 and row[0] <=60:
                    row[1] = 'FAIR'
                elif row[0] > 60 and row[0] <= 85:
                    row[1] = 'GOOD'
                else:
                    row[1] = 'EXCELLENT'
                cursor.updateRow(row)
                print("Record number " + str(cntr)  + " updated")
                cntr = cntr + 1
    except Exception as e:
        print (e.message)
    
    

    输出:

    Record number 405 updated
    Record number 406 updated
    Record number 407 updated
    Record number 408 updated
    

    8.7 使用UpdateCursor删除行

    UpdateCursor 除了可以更新记录,还可以删除表或要素类的记录。在更新或删除记录时, UpdateCursor 对象的创建方式是相同的,但删除记录调用的是deleteRow ()而不是updateRow ()。也可以使用where 子句来限制运回的记录。本节将使用where 子句筛选过的UpdateCursor 对象来删除Fire Incidents 要素类中的记录。

    代码:

    # coding=utf-8
    import arcpy
    arcpy.env.workspace = r"C:\ArcpyBook\Ch8\WildfireData\WildlandFires.mdb"
    try:
        with arcpy.da.UpdateCursor("FireIncidents",("CONFIDENCEVALUE"),'[CONFID_RATING] = \'POOR\'') as cursor:
            # 创建一个计数器变量,用来输出脚本的进度
            cntr = 1
            for row in cursor:
                cursor.deleteRow()
                print("Record number " + str(cntr)  + " deleted")
                cntr = cntr + 1
    except Exception as e:
        print (e.message)
    

    输出:

    Record number 31 deleted
    Record number 32 deleted
    Record number 33 deleted
    Record number 34 deleted
    

    要素类和表中的行可以使用UpdateCursor 中的deleteRow ()方法删除,本节在UpdateCursor 构造函数中使用where 子句来限制CONFID RATING 宇段返回值为POOR 的要素。然后循环遍历游标返回的要素,井调deleteRow ()方法删除要素类中的行。

    8.8 在编辑会话中插入和更新行

    代码

    import arcpy
    import os
    arcpy.env.workspace = "C:/ArcpyBook/Ch8/WildfireData/WildlandFires.mdb"
    try:
    	edit = arcpy.da.Editor('C:/ArcpyBook/Ch8/WildfireData/WildlandFires.mdb')
    	edit.startEditing(True)
    	with arcpy.da.UpdateCursor("FireIncidents",("CONFIDENCEVALUE","CONFID_RATING")) as cursor:
    		cntr = 1
    		for row in cursor:
    			# update the confid_rating field
    			if row[0] > 40 and row[0] <= 60:
    				row[1] = 'GOOD'
    			elif row[0] > 60 and row[0] <= 85:
    				row[1] = 'BETTER'
    			else:
    				row[1] = 'BEST'
    			cursor.updateRow(row)
    			print("Recond number " + str(cntr) + " updated" )
    			cntr += 1
    		edit.stopEditing(True)
    except Exception as e:
        print(e.message)
    
    

    输出:

    Recond number 368 updated
    Recond number 369 updated
    Recond number 370 updated
    Recond number 371 updated
    Recond number 372 updated
    
    教程用的数据在这里:链接:https://pan.baidu.com/s/1QmfsY3lDPB4LbUzorCRuyA 
    提取码:duge 
    
    展开全文
  • 游标

    2015-11-28 22:29:19
    游标提供了一种对中检索出的数据进行操作的灵活手段,就本质而言,游标实际上是一种能包括多条数据记录的结果集中每次提取一条记录的机制。游标总是与一条SQL 查询语句相关联因为游标由结果集(可以是零条、一...
  • SQL游标

    千次阅读 2017-12-02 22:10:31
    今天学习python的时候,用到了数据库的SQL语句,很多知识都忘记了。想了一会才记起来是游标。import sqlite3 conn = sqlite3.connect('nbaallelo.db') cur = conn.cursor() # 代码补完 query = 'SELECT elo_n, win_...
  • 游标(cursor)是一个存储在DBMS服务器上的数据库查询,它不是一条SELECT语句,而是被该语句检索出来的结果集。在存储了游标之后,应用程序可以根据需要滚动或浏览其中的数据。 使用游标 使用游标的步骤: 在使用...
  • SQL -- 游标(详细)

    2020-07-20 15:50:33
    文章目录一 、概述1-1 存储过程基本概念1-2 触发器种类及分类二、语法 T-SQL1-1 创建 DML触发器1-1-1 AFTER 举例1-1-2 INSTEAT OF 举例1-2 创建 DDL触发器1-1-1 AFTER 举例1-3 修改 DML...它作为语句的执行结果自动引发
  • 目录 游标是什么? 如何创建一个游标? 操作游标的四个步骤? ...如何判断游标的提取状态?...可以把游标当成一个指针,它可以随意移动到指定的,允许用户对指定位置数据进行处理 游标包括哪些部分..
  • MySql游标

    千次阅读 2019-06-08 12:04:32
    先有数据基础:游标是在先数据表中检索出数据之后才能继续灵活操作的技术。类似于指针:游标类似于指向数据结构堆栈的指针,用来pop出所指向的数据,并且只能每次取一个。 2、游标优缺点:...
  • sql 游标

    2021-06-20 19:29:14
    sql 游标 文章目录sql 游标一 什么是游标游标分类1.显式游标2.隐式游标3.游标参数4.游标类型的定义 一 什么是游标游标: oracle在执行sql语句时,会给每个sql语句分配一个缓冲区, 用来临时存储sql语句和sql...
  • PL/SQL:open for [using] 语句 2017年07月19日 09:52:55 学孩儿无牙哭做粥 阅读数:681 标签: oracleSQLPLSQL 更多 个人分类: ORACLESQL/PLSQL 版权声明:本文为博主原创文章,未经博主允许不得转载。 ...
  • 游标可以被看作是一个查询结果集(可以是零条、一条或由相关的选择语句检索出的多条记录)和结果集中指向特定记录的游标位置组成的一个临时文件,提供了在查询结果集中向前或向后浏览数据、处理结果集中数据的能力。...
  • 第14章 游标

    2019-07-31 14:32:26
    在关系数据库,对数据的操作会对整个集产生影响,如常用的SELECT查询语句,其返回结果是一个结果集,但是用户往往需要结果集中逐一地读取一条记录,要解决这个问题可以通过游标来实现。...
  • 这里写自定义目录标题前言什么是游标1、游标的概念2、游标的组成3、游标的分类API服务器游标Transaction-SQL游标客户端游标怎么使用游标1、声明游标2、打开游标对象3、读取游标数据4、关闭游标5、释放游标6、修改...
  • 另外,使用游标也可以轻易的取出在检索出来的行中前进或后退一或多行的结果。 游标可以遍历返回的多行结果。 补充: Mysql中游标只适用于存储过程以及函数。 创建游标: 语法: 1.定义游标:declare 游标名...
  • Oracle游标的使用

    千次阅读 2017-04-30 12:45:00
    游标提供了一种中检索数据并进行操作的灵活手段,游标主要用在服务器上,处理由客户端发送给服务器端的SQL语句,或是批处理、存储过程、触发器的数据处理请求。游标的作用就相当于指针,通过游标PL/SQL程序...
  • oracle 11g 游标

    2018-09-28 10:41:51
    如上图所示,游标可以一的控制查询出来的记录,也就是实现对查询记录的操作的控制。 &amp;amp;amp;nbsp; &amp;amp;amp;nbsp; &amp;amp;amp;nbsp; &amp;amp;amp;nbsp; 举个例子:存在两张...
  • mysql 存储过程中游标After my previous article on Stored Procedures was published on SitePoint, I received quite a number of comments. One of them suggested further elaboration on CURSOR, an important ...
  • 一、实现一个游标,顺序读取并打印所有学生的 学号、课程号、成绩 信息,读取过程删除S5的选课记录,并将为空的成绩修改为60分。 提示:编写过程,可需参阅联机丛书获取下列内容的具体用法 1、声明变量可用...
  • MySQL游标

    千次阅读 2018-08-09 16:34:06
    MySQL 5 开始添加了对游标(cursor)的支持,使用游标可以很方便的在查询出来的结果集上获取第一、最后一、上一或下一等一系列的操作。 游标是一个存储在 MySQL 服务器上的数据库查询,它不是一条 ...
  • Oracle游标

    2019-03-04 14:47:57
    在这个章节,我们将会讨论在PL/SQL游标。Oracle创建一块称之为上下文的内存区域用来处理SQL语句,这块内存区域包含了执行SQL语句需要的所有信息,例如:语句执行后返回的记录的数量等等 一个游标是一个指向上...
  • Oracle入门到实战

    万次阅读 多人点赞 2019-11-09 11:12:07
    Oracle学习:Oracle基础语句、Oracle表查询关键字、Oracle常用函数、Oracle常用结构
  • 数据库面试

    千次阅读 多人点赞 2019-02-13 09:03:42
    一、数据库问答题 1. SQL语言包括哪些类型? 数据定义DDL:Create Table,Alter Table,Drop Table, Create/Drop Index等 ...内连接是保证两个表所有的都要满足连接条件,而外连接则不然。 在外连接...
  • 游标使用

    2019-04-25 20:15:48
    OPEN cursor_fruit --打开游标 SET @varCursor=cursor_fruit --为游标变量赋值 FETCH NEXT FROM @varCursor --从游标变量读取值 WHILE @@FETCH_STATUS=0 --判断FETCH语句是否执行成功 BEGIN FETCH NEXT FROM @...
  • 一、游标的主要针对操作对象是数据库返回的结果集,广义上可以理解为是结果集中一读取数据的方法,一种机制,狭义上也可以将游标理解为所要操作的结果集,因为在操作的最开始就需要给游标指定一个要操作的...
  • mysql面试题

    千次阅读 2019-09-23 12:28:36
    过滤掉sql语句中的一些关键词:update、insert、delete、select、 * 。 提高数据库表和字段的命名技巧,对一些重要的字段根据程序的特点命名,取不易被猜到的。 Php配置文件中设置register_globals为off,关闭...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 27,640
精华内容 11,056
关键字:

从游标中检索行的语句