精华内容
下载资源
问答
  • 关闭游标

    2018-03-30 14:54:00
    关闭游标是指使用close语句关闭游标释放数据绝国际和定位数据记录的锁,游标关闭后,不会释放游标占用的数据结构,可以使用open语句再次打开。 语法: close <游标名称> close <mycursor> 转载于:...

    关闭游标是指使用close语句关闭游标释放数据绝国际和定位数据记录的锁,游标关闭后,不会释放游标占用的数据结构,可以使用open语句再次打开。

    语法:

    close <游标名称>

    close  <mycursor>

    转载于:https://www.cnblogs.com/xiaowie/p/8676189.html

    展开全文
  • python数据库游标使用

    2020-07-02 18:32:59
    本博文源于python基础,主要讲解数据库游标使用

    本博文源于python基础,主要讲解数据库游标使用。

    数据库应用程序接口概述

    操作数据库不免用到游标,游标有一个connect原型

    connect(dsn,user,password)
    

    其中的参数意义:

    • dsn 数据库服务器主机与数据库名
    • user 数据库访问的用户名
    • password 数据库访问的密码

    如果连接成功,则返回Connection对象,它所具有的方法如下:

    • close() 关闭数据库连接
    • commit() 将未完成的事务提交到数据库
    • rollback() 将数据库回滚到未完成事务的开始状态
    • cursor() 在数据库连接上创建一个cursor对象

    数据库游标的使用

    游标对象执行查询方法及其作用

    方法作用
    execute(query[,parameters])在数据库上执行查询或query命令(query是SQL语句字符串),paramenters是查询字符串中变量值的序列或映射
    executemany(query[,paramseq])多次执行查询命令,将每次查询所需的变量值存储在paramseq序列中
    callproc(procname[,parameters])在数据库上调用名为procnaem的存储过程,并以parameters为参数

    游标对象获取查询结果集的方法及其作用

    方法作用
    fetchone()返回查询数据库后得到下一行结果集(列表或元组形式)
    fetchmany([size])返回查询结果行的序列,可选参数size代表行数
    fetchall()返回全部剩余的查询结果行的序列
    nextset()跳到下一结果集,准备获取其信息

    游标对象属性及其意义

    属性意义
    arraysize为fetchmany提供一个默认的整数值,表示一次返回结果集行数
    description返回当前集的列名信息
    rowcount返回查询结果的行数,-1则表示没有结果集
    nextset()跳到下一结果集,准备获取其信息
    展开全文
  • DB2数据库游标使用总结

    千次阅读 2019-11-10 07:55:32
    DB2数据库游标使用总结 工作中因需要使用DB2,所以逼迫自己学习db2游标使用,上网看了很多材料,加上自己的一些总结,把最近的学习心得总结以下,希望对工作中使用DB2数据库的同学能有所帮助! 一、 DB2游标概述...

    DB2数据库游标使用总结
         工作中因需要使用DB2,所以逼迫自己学习db2游标的使用,上网看了很多材料,加上自己的一些总结,把最近的学习心得总结以下,希望对工作中使用DB2数据库的同学能有所帮助!

    一、 DB2游标概述
           游标的概念网上已经解释的很清楚了,我的理解,使用select语句都会产生一个结果集,这些结果集放在一个缓存空间,游标相当于一个指针变量,一行一行的读取结果集。
           大概意思如下图所示:

    二、使用游标的语法
    1.  声明一个游标: declare myCur cursor for select id from employee;
    2. 打开游标: open myCur;  --执行游标中的SQL语句
    3.  读取游标: fetch myCur into v_id; --读取结果集中的一行数据
    4. 关闭游标: close myCur;  --释放结果集的空间

    游标使用注意事项: 

    a. 游标必须再一个begin..end模块中声明和使用

    b. 在游标的begin..end模块中,声明变量、游标以及条件处理要有序进行;普通变量声明在先,其次到游标的声明,最后才能声明condition handler

    c. 结果集读取完毕后,会返回一个NOT FOUND的告警,通过抓取这个SQLCODE,可以控制循环的退出。

    三、 游标使用案例
    案例1: 使用游标,读取一行数据

    /*
    存储过程: SP_EMPLOYEE_SALARY
    目的: 输入一个ID,返回该员工的salary,读一行数据
    */
    
    CREATE OR REPLACE PROCEDURE  SP_EMPLOYEE_SALARY(
    IN V_EMPNO VARCHAR(6),
    OUT V_SALARY DECIMAL(9,2)
    )
    BEGIN
      DECLARE SQLCODE INTEGER DEFAULT 0;
      DECLARE V_SQLCODE INTEGER;
      
      BEGIN
        DECLARE V_SAL DECIMAL(9,2);
        DECLARE myCUR CURSOR FOR SELECT SALARY FROM EMPLOYEE WHERE EMPNO=V_EMPNO;  /*声明游标*/
        
        DECLARE CONTINUE HANDLER FOR NOT FOUND  /*定义抓取异常NOT FOUND*/
        BEGIN
          SET V_SQLCODE = SQLCODE;
        END;
        
        OPEN myCUR; /*打开游标*/
        
        FETCH myCUR INTO V_SAL;  /*读取游标*/
        SET V_SALARY = V_SAL;
        
        CLOSE myCUR;  /*关闭游标*/
      END;
      
    END

    存储过程的编译和运行情况如下:

    编译的方式有两种:

    1. 通过客户端IBM Data Studio编译:

    运行情况截图,在Linux命令模式下运行: [db2inst2@virtualone procedure]$ db2 "call SP_EMPLOYEE_SALARY('000130',?)"

    2. 通过命令方式编译: 

    第一步: 将末尾的end加上一个@

    第二步,在命令模式下:  [db2inst2@virtualone procedure]$  db2 -td@ -f SP_EMPLOYEE_SALARY.sql,编译之后,运行方式与上面的一致,调用命令即可: db2 "call SP_EMPLOYEE_SALARY('000130',?)"

     

    案例2: 采用循环读取游标

    实现游标:使用循环方式把employee表的EMPNO,FIRSTNME字段数据插入ID_NAME表
    1. 创建表
    CREATE TABLE ID_NAME( 
    ID CHAR(6),
    NAME VARCHAR(12)
    )
    
    2. 创建存储过程
    CREATE OR REPLACE PROCEDURE  SP_ID_NAME(
    OUT REMSG VARCHAR(10)
    )
    BEGIN
      DECLARE SQLCODE INTEGER DEFAULT 0;
      DECLARE V_SQLCODE INTEGER;
      
      DECLARE CONTINUE HANDLER FOR SQLWARNING
      BEGIN
        SET REMSG = 'WARNING'; 
      END;
      
      DECLARE EXIT HANDLER FOR SQLEXCEPTION
      BEGIN
        SET REMSG = 'ABORTED'; 
      END;
      
      SET REMSG='SUCCESS';
      
      BEGIN
        DECLARE V_ID CHAR(6);
        DECLARE V_NAME VARCHAR(12);
        DECLARE myCUR CURSOR FOR SELECT EMPNO,FIRSTNME FROM EMPLOYEE;  /*声明游标*/
        
        DECLARE CONTINUE HANDLER FOR NOT FOUND  /*定义抓取异常NOT FOUND*/
        BEGIN
          SET V_SQLCODE = SQLCODE;
        END;
        
        OPEN myCUR; /*打开游标*/
        
        FETCH_LOOP: LOOP FETCH myCUR INTO V_ID,V_NAME;  /*采用循环方式读取所有游标数据*/
    
       /*当数据读取完时,就会抓取到not found 异常,SQLCODE就为100,赋值给V_SQLCODE,才可退出循环*/
          IF (V_SQLCODE = 100) THEN    
            LEAVE FETCH_LOOP;
          ELSE
            INSERT INTO ID_NAME (ID,NAME) VALUES(V_ID,V_NAME);
          END IF;
          
        END LOOP FETCH_LOOP;
        
        SET REMSG = 'CURSOR SUCCESS';
        
        CLOSE myCUR;  /*关闭游标*/
      END;
      
    END

    代码的编译和运行方式与上面案例一样。

    案例3: 使用动态SQL语句与游标相结合

    /*实现游标:使用动态SQL与游标相结合实现把employee表的数据插入ID_NAME表*/
    
    CREATE OR REPLACE PROCEDURE  SP_STMT_ID_NAME(
    OUT REMSG VARCHAR(50)
    )
    BEGIN
      DECLARE SQLCODE INTEGER DEFAULT 0;
      DECLARE V_SQLCODE INTEGER;
      
      DECLARE EXIT HANDLER FOR SQLEXCEPTION
      BEGIN
        SET REMSG = 'ABORTED'; 
      END;
      
      SET REMSG='SUCCESS';
      
      BEGIN
        DECLARE V_ID CHAR(6);
        DECLARE V_NAME VARCHAR(12);
        DECLARE V_SELECT_SQL VARCHAR(100);
        DECLARE V_INSERT_SQL VARCHAR(100);
        DECLARE V_STMT STATEMENT;
        
        DECLARE myCUR CURSOR FOR V_STMT; /*声明游标*/
          
        DECLARE CONTINUE HANDLER FOR NOT FOUND  /*定义抓取异常NOT FOUND*/
        BEGIN
          SET V_SQLCODE = SQLCODE;
        END;
        
        SET V_SELECT_SQL = 'SELECT EMPNO,FIRSTNME FROM EMPLOYEE';  
        
        PREPARE V_STMT FROM V_SELECT_SQL;
        
        OPEN myCUR; /*打开游标*/
        
        FETCH_LOOP: LOOP FETCH myCUR INTO V_ID,V_NAME;  /*读取游标,采用循环方式读取所有游标数据*/
          
          IF (V_SQLCODE = 100) THEN
            LEAVE FETCH_LOOP;
          ELSE
            SET V_INSERT_SQL = 'INSERT INTO ID_NAME (ID,NAME) VALUES(' || V_ID||  ',''' || V_NAME || ''')';
            PREPARE s from V_INSERT_SQL;
            EXECUTE s;
          END IF;
          
        END LOOP FETCH_LOOP;
        
        SET REMSG = 'CURSOR_SUCCESS';
        
        CLOSE myCUR;  /*关闭游标*/
      END;
      
    END

            总结,以上的代码时基于db2的sample数据库上运行的,大家有兴趣可以去ibm官网上下载db2的免费版,在虚拟机上装个Linux,再装db2,就可以搭建好一个实验环境。

    DB2游标的学习,给大家分享两个连接,这两篇文章也写得很用心,大家也可以综合参考以下:

    https://www.iteye.com/blog/zhuyuehua-882826

    https://www.cnblogs.com/Mr-kevin/archive/2016/07/04/5641182.html

    展开全文
  • SQL游标使用方法

    2019-08-02 01:38:59
    1. 为何使用游标: 使用游标(cursor)的一个主要的原因就是把集合操作转换成单个记录处理方式。用SQL语言从数据库中检索数据后,结果放在内存的一块区域中,且结果往往是一个含有多个记录的集合。游标机制允许用户在...

      1. 为何使用游标:
       使用游标(cursor)的一个主要的原因就是把集合操作转换成单个记录处理方式。用SQL语言从数据库中检索数据后,结果放在内存的一块区域中,且结果往往是一个含有多个记录的集合。游标机制允许用户在SQL server内逐行地访问这些记录,按照用户自己的意愿来显示和处理这些记录。
      2. 如何使用游标:
       一般地,使用游标都遵循下列的常规步骤:
       (1) 声明游标。把游标与T-SQL语句的结果集联系起来。
       (2) 打开游标。
       (3) 使用游标操作数据。
       (4) 关闭游标。
      2.1. 声明游标
      DECLARE CURSOR语句SQL-92标准语法格式:
      DECLARE 游标名 [ INSENSITIVE ] [ SCROLL ] CURSOR
      FOR sql-statement
      Eg:
      Declare MycrsrVar Cursor
      FOR Select * FROM tbMyData
      2.2 打开游标
      OPEN MycrsrVar
      当游标被打开时,行指针将指向该游标集第1行之前,如果要读取游标集中的第1行数据,必须移动行指针使其指向第1行。就本例而言,可以使用下列操作读取第1行数据:
       FETCH FIRST from E1cursor
       或 FETCH NEXT from E1cursor
      
      2.3 使用游标操作数据
      下面的示例用@@FETCH_STATUS控制在一个WHILE循环中的游标活动
      /* 使用游标读取数据的操作如下。*/
      DECLARE E1cursor cursor /* 声明游标,默认为FORWARD_ONLY游标 */
      FOR SELECT * FROM c_example
      OPEN E1cursor /* 打开游标 */
      FETCH NEXT from E1cursor /* 读取第1行数据*/
      WHILE @@FETCH_STATUS = 0 /* 用WHILE循环控制游标活动 */
      BEGIN
       FETCH NEXT from E1cursor /* 在循环体内将读取其余行数据 */
      END
      CLOSE E1cursor /* 关闭游标 */
      DEALLOCATE E1cursor /* 删除游标 */

     

    declare @id int,@name varchar(20);
    declare cur cursor fast_forward for
       select id,name from a;
    open cur;
    fetch next from cur into @id,@name;
    while @@fetch_status=0
    begin
        --做你要做的事
        fetch next from cur into @id,@name;
    end
    close cur;
    deallocate cur;


      2.4 关闭游标
       使用CLOSE语句关闭游标
      CLOSE { { [ GLOBAL ] 游标名 } | 游标变量名 }
      
      使用DEALLOCATE语句删除游标,其语法格式如下:
      DEALLOCATE { { [ GLOBAL ] 游标名 } | @游标变量名
      
      3. FETCH操作的简明语法如下:
      
      FETCH
       [ NEXT | PRIOR | FIRST | LAST]
      FROM
      { 游标名 | @游标变量名 } [ INTO @变量名 [,…] ]
      
      参数说明:
      NEXT 取下一行的数据,并把下一行作为当前行(递增)。由于打开游标后,行指针是指向该游标第1行之前,所以第一次执行FETCH NEXT操作将取得游标集中的第1行数据。NEXT为默认的游标提取选项。
      INTO @变量名[,…] 把提取操作的列数据放到局部变量中。列表中的各个变量从左到右与游标结果集中的相应列相关联。各变量的数据类型必须与相应的结果列的数据类型匹配或是结果列数据类型所支持的隐性转换。变量的数目必须与游标选择列表中的列的数目一致。
      --------------------------------------------------------------------------------------------------------------------------------
      每执行一个FETCH操作之后,通常都要查看一下全局变量@@FETCH_STATUS中的状态值,以此判断FETCH操作是否成功。该变量有三种状态值:
      · 0 表示成功执行FETCH语句。
      · -1 表示FETCH语句失败,例如移动行指针使其超出了结果集。
      · -2 表示被提取的行不存在。
      由于@@FETCH_STATU是全局变量,在一个连接上的所有游标都可能影响该变量的值。因此,在执行一条FETCH语句后,必须在对另一游标执行另一FETCH 语句之前测试该变量的值才能作出正确的判断。

    转载于:https://www.cnblogs.com/hayden/archive/2010/01/29/1659275.html

    展开全文
  • oracle 关于游标关闭

    千次阅读 2020-11-07 22:04:01
    oracle 存储过程 游标关闭疑问 现在是这样写的: 写了2个游标 CURSOR p_people IS SELECT t1.created_by FROM qms_claim_form_headers t1 WHERE t1.form_status IN ('CONFIRMED') AND (SELECT to_number...
  • MySQL游标使用

    2019-12-30 16:02:25
    MySQL游标使用 游标可以理解为指向数据表中某一行记录的指针,用来指向一个查询结果的某一行,然后通过程序对该行数据进行特定操作。游标每次只能读取一行数据,对于多条记录,需要反复读取,直到游标读取不到...
  • 三、游标使用

    2021-01-20 09:10:33
    三、游标使用游标概念显式游标处理游标属性游标的 FOR 循环处理隐式游标隐式游标属性游标修改和删除操作 在 PL/SQL 程序中,对于处理多行记录的事务经常使用游标来实现 游标概念 为了处理 SQL 语句,ORACLE 必须分配...
  • 一,游标的概念与作用 摘自百度百科:游标(Cursor)是处理数据的一种方法,为了查看或者处理结果集中的数据,游标提供了在结果集中一次一行或者多行前进或向后浏览数据的能力。可以把游标当作一个指针,它可以指定...
  • 使用游标的SQL语句

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

    千次阅读 2017-07-26 09:41:23
    游标可以解决PB中Select语句产生的多结果赋值问题; 游标是一种能从包括多条数据记录的结果集中每次提取一条记录的机制; 下面是一个书写例子:《将游标产生的结果集存入数组》,仅供参考。 String ls_id[] //声明...
  • 1,游标使用 1.1,游标的概念 1.2,处理显式游标 1.3,游标属性 1.4,游标的 FOR循环 1.5,处理隐式游标 1.6,关于 NO_DATA_FOUND 和 %NOTFOUND 的区别 1.7,游标修改和删除操作 2,异常错误处理 2.1,异常处理...
  • MySQL存储过程学习整理,游标使用,参数输入输出 MySQL游标使用MySQL存储过程参数用法 MySQL PROCEDURE用法 一、 什么是存储过程 1、可以理解为 sql 语句集,可以同时执行多条sql,实现较复杂的逻辑。 2、关于...
  • 关闭,释放游标

    2020-02-13 16:02:33
    –如何关闭、释放游标 declare YbGb cursor scroll for select * from Teacher open YbGb fetch next from YbGb close YbGb --关闭游标 deallocate YbGb --释放游标
  • 21.1游标SQL检索操作返回一组称为结果集的行。这组返回的行都是与SQL语句相匹配的行。 结果集(result set)SQL查询所检索出的结果 游标的一些选项和特性: (1)能够标记游标为只读,使数据能读取,但不能更新和...
  • Oracle存储过程中游标的简单使用

    千次阅读 2018-02-06 15:44:16
    初衷: 存储过程中查询语句如何返回多行结果? 我们知道,如果存储... 若想让存储过程中的查询语句返回多行结果不报错,则需要使用游标来实现。 本例主要也是用来熟悉存储过程中游标的简单使用方法。案例所涉及
  • 作用:处理多行记录集 类似指针,一次可以处理其中一行游标的主要属性 ...%isopen: 当游标打开时,返回true,关闭时返回false %rowcount: 返回sql语句受影响的行数隐式游标 平常的select查询,D
  • PL/SQL管理隐式游标,当查询开始时隐式游标打开,查询结束时隐式游标自动关闭。显式游标在PL/SQL块的声明部分声明,在执行部分 或异常处理部分打开,取出数据,关闭。   使用游标 这里要做一个声明,我们所说的...
  • 关键字 概念 类型 异常处理 一 概念 游标是SQL的一个内存工作区,由系统或用户以变量的形式定义。游标的作用就是用于临时存储从数据库中提取的数据块。在某些情况下,需要把数据从存放在磁盘的表中调到计算机...
  • SQL是用于访问ORACLE数据库的语言,PL/SQL扩展和加强了SQL的功能,它同时引入了更强的程序逻辑。...较好的PL/SQL程序设计是在PL/SQL块中使用象DBMS_SQL这样的内建包或执行EXECUTE IMMEDIATE命令建立动态SQL来...
  • plsql游标的操作

    2014-12-16 14:43:10
    游标的操作: ...4:关闭游标 declare cur_emp(var_job in varchae2:='salesman') //声明游标检索雇员信息 is select empno,ename,sal  from emp  where job=var_job; type record_emp is record 
  • 游标使用技巧

    2019-09-28 21:16:59
    游标游标是一个被SELECT语句检索出来的语句集。存储游标以后,应用程序和用户根据需要股滚动或浏览数据 游标提供了一种对从表中检索出的数据进行操作的灵活手段,就本质而言,游标实际上是一种能从包括多条数据...
  • 这里写自定义目录标题前言什么是游标1、游标的概念2、游标的组成3、游标的分类API服务器游标Transaction-SQL游标客户端游标怎么使用游标1、声明游标2、打开游标对象3、读取游标数据4、关闭游标5、释放游标6、修改...
  •  1、使用CLOSE 命令关闭游标  在处理完游标中数据之后必须关闭游标来释放数据结果集和定位于数据记录上的锁。CLOSE 语句关闭游标,但不释放游标占用的数据结构。如果准备在随后的使用中再次打开游标,则应使用...
  • Oracle游标变量的使用实例

    千次阅读 2014-09-28 10:41:58
    上面我说过游标游标变量的区别。游标变量类似于指针,它指向
  • 第14章 游标

    2019-07-31 14:32:26
    第14章 游标 在SQL中,游标是一个重要的概念,它提供了能从包括多条数据记录的结果集中每次提取一条记录的机制,使得用户能够灵活地处理SQL操作经常返回的结果集。本章将讲解与游标相关的一些内容。 14.1 理解游标 ...
  • postgresql游标的简单使用

    千次阅读 2015-05-15 16:46:05
    百度游标的定义,显示游标是系统为用户开设的一个数据缓冲区,存放SQL语句的执行结果。感觉游标就跟指针差不多,对于select查询出...1、SQL命令级别使用游标 (1)declare定义游标:declare cur_name cursor for query
  • (2)CONCAT_WS()//使用指定的分隔符进行字符连接 (3)FORMAT()//数字格式化 (4)LOWER()//转化小写 (5)UPPER()//转换大写 (6)LEFT()//获取左侧字符 (7)RIGHT()//获取右侧字符 (8)LENGTH()//取得字符串...
  • Oracle游标使用大全

    2014-04-14 08:46:05
     SELECT语句用于从数据库中查询数据,当在PL/SQL中使用SELECT语句时,要与INTO子句一起使用,查询的返回值被赋予INTO子句中的变量,  变量的声明是在DELCARE中。SELECT INTO语法如下: ----》在PL/SQL中SELECT...
  • 一、首先介绍游标的功能、相应的操作命令、变量及工作流程   游标(cursor)主要功能是用select查询语句,得到的多行数据结果,一次一行地送至需要调用的存储过程或宿主 程序 中,最初游标指向第一行数据,将这行...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 28,209
精华内容 11,283
关键字:

关闭游标使用的命令是