使用游标技术实现对数据库的增删改查操作

一、游标概述

1、为什么要使用游标

程序语言是面向记录的,一组变量一次只能存放一个变量或者一条记录,无法直接接收数据库中的查询结果集。为了更好的满足SQL语句向应用程序输出数据的需求,引入了游标的概念,用游标来协调这两种不同的处理方式。

2、游标的基本原理

二、游标分类

①静态游标是在编译时知道其SELECT语句的游标。静态游标又分为两种类型:隐式游标和显示游标。

②很多时候用户需要为游标使用的查询直到运行的时候才能够确定,可以使用REF游标(引用游标)和游标变量满足这个要求。为了使用引用游标,必须声明游标变量。有两种类型的REF游标:强类型REF游标和弱类型REF游标。

1、显式游标的用法

(1)显示游标的使用步骤:

①声明游标

②打开游标

③提取游标

④关闭游标

DECLARE
  CURSOR cursor_studentInfo IS SELECT * FROM Student;--声明游标
  stuInfo Student%ROWTYPE;
BEGIN
  OPEN cursor_studentInfo;--打开游标
  LOOP
    FETCH cursor_studentInfo INTO stuInfo;--提取游标
    EXIT WHEN cursor_studentInfo%NOTFOUND;
    dbms_output.put_line('姓名:'||stuInfo.stuName);
  END LOOP;
  CLOSE cursor_studentInfo;--关闭游标 
END;

(2)显示游标的属性

(3)使用循环游标简化游标的读取

可以使用循环游标简化显示游标的处理代码。循环游标隐式打开游标,自动从活动集获取行,然后在处理完所有行时关闭游标。循环游标自动创建%rowtype类型的变量并将此变量用做记录索引。

DECLARE
  CURSOR cursor_studentInfo IS SELECT * FROM Student;--声明游标
  stuInfo Student%ROWTYPE;
BEGIN
  FOR stuInfo IN cursor_studentInfo
  LOOP
    dbms_output.put_line('姓名:'||stuInfo.stuName);
  END LOOP;
END;

(4)NO_DATA_FOUND和%NOTFOUND的区别

2、隐式游标的用法

3、REF游标的用法

隐式游标和显示游标都是静态定义的,当用户使用它们的时候查询语句语句确定。如果用户需要在运行的时候动态决定执行何种查询,可以使用REF游标和游标变量,步骤如下:

①声明游标。创建游标变量需要两个步骤:声明REF CURSOR类型和声明REF CURSOR类型的游标变量。

②打开游标。打开游标时使用的是OPEN...FOR语句。

语法:OPEN cursor_name FOR select_statement ;

③提取游标。同显示游标。

④关闭游标。同显示游标。

DECLARE
  TYPE ref_cursor IS REF CURSOR;--定义一个REF CURSOR数据类型(弱类型)
  c_ref_cursor_stuInfo ref_cursor;--声明一个该数据类型的游标变量
  stuInfo Student%ROWTYPE;
BEGIN
  OPEN c_ref_cursor_stuInfo FOR SELECT * FROM Student;--打开游标
  LOOP
    FETCH c_ref_cursor_stuInfo INTO stuInfo;--提取游标
    EXIT WHEN c_ref_cursor_stuInfo%NOTFOUND;
    dbms_output.put_line('姓名:'||stuInfo.stuName);
  END LOOP;
  CLOSE c_ref_cursor_stuInfo;--关闭游标
END;

 

  • 4
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Python中,可以使用多种方式来实现数据库增删操作。以下是一种常见的方式: 1. 连接数据库: 首先,需要使用适当的数据库驱动程序来连接到数据库。例如,对于MySQL数据库,可以使用`mysql-connector-python`库来连接。 2. 建立连接: 使用数据库驱动程序提供的函数或方法,建立与数据库的连接。需要提供数据库的主机名、用户名、密码等信息。 3. 创建游标: 通过连接对象创建一个游标对象,用于执行SQL语句。 4. 执行SQL语句: 使用游标对象执行SQL语句,可以是插入、删除、更新或询语句。 5. 提交事务: 如果执行了修操作(插入、删除、更新),需要通过连接对象提交事务,使修生效。 6. 关闭游标和连接: 在完成所有操作后,关闭游标和连接,释放资源。 下面是一个简单的示例,演示如何使用Python实现数据库增删操作: ```python import mysql.connector # 连接数据库 cnx = mysql.connector.connect( host="localhost", user="username", password="password", database="database_name" ) # 创建游标 cursor = cnx.cursor() # 插入数据 insert_query = "INSERT INTO table_name (column1, column2) VALUES (%s, %s)" data = ("value1", "value2") cursor.execute(insert_query, data) # 删除数据 delete_query = "DELETE FROM table_name WHERE column1 = %s" data = ("value1",) cursor.execute(delete_query, data) # 更新数据 update_query = "UPDATE table_name SET column1 = %s WHERE column2 = %s" data = ("new_value", "value2") cursor.execute(update_query, data) # 询数据 select_query = "SELECT * FROM table_name" cursor.execute(select_query) result = cursor.fetchall() # 提交事务 cnx.commit() # 关闭游标和连接 cursor.close() cnx.close() ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值