温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Cursor游标怎么遍历数据

发布时间:2026-10-30 20:35:56 来源:亿速云 阅读:91 作者:小樊 栏目:数据库

“游标(Cursor)”在不同场景里含义略有不同,常见的有以下几种情况。你没说明具体环境,我把最常见的几种都列出来,你可以对号入座。


一、数据库中的游标(SQL 游标遍历)

1️⃣ MySQL 存储过程游标

DELIMITER $$

CREATE PROCEDURE test_cursor()
BEGIN
    DECLARE done INT DEFAULT FALSE;
    DECLARE v_id INT;
    DECLARE v_name VARCHAR(50);

    -- 定义游标
    DECLARE cur CURSOR FOR
        SELECT id, name FROM user;

    -- 异常处理(遍历结束)
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;

    OPEN cur;

    read_loop: LOOP
        FETCH cur INTO v_id, v_name;
        IF done THEN
            LEAVE read_loop;
        END IF;

        -- 处理数据
        SELECT v_id, v_name;
    END LOOP;

    CLOSE cur;
END$$

DELIMITER ;

✅ 核心步骤:

  1. DECLARE CURSOR
  2. OPEN
  3. FETCH
  4. CLOSE

2️⃣ SQL Server 游标

DECLARE cur CURSOR FOR
SELECT id, name FROM user;

OPEN cur;

FETCH NEXT FROM cur INTO @id, @name;

WHILE @@FETCH_STATUS = 0
BEGIN
    PRINT @name;
    FETCH NEXT FROM cur INTO @id, @name;
END

CLOSE cur;
DEALLOCATE cur;

3️⃣ Oracle 游标

DECLARE
  CURSOR cur IS SELECT id, name FROM user;
  v_id user.id%TYPE;
  v_name user.name%TYPE;
BEGIN
  OPEN cur;
  LOOP
    FETCH cur INTO v_id, v_name;
    EXIT WHEN cur%NOTFOUND;
    DBMS_OUTPUT.PUT_LINE(v_name);
  END LOOP;
  CLOSE cur;
END;

二、编程语言中的“游标”(如数据库驱动)

Python(如 pymysql / sqlite)

cursor.execute("SELECT id, name FROM user")
for row in cursor.fetchall():
    print(row)

或逐行:

for row in cursor:
    print(row)

三、前端 / Android 中的 Cursor

Android(SQLite Cursor)

Cursor cursor = db.rawQuery("SELECT * FROM user", null);
while (cursor.moveToNext()) {
    String name = cursor.getString(
        cursor.getColumnIndex("name")
    );
}
cursor.close();

四、什么时候不该用游标?

⚠️ 数据库里能用 SQL 解决的,不要用游标
原因:

  • 性能差
  • 锁表风险
  • 难以维护

五、你可以告诉我:

  • 用的是 哪种数据库(MySQL / Oracle / SQL Server)?
  • 是 SQL 里遍历 还是 代码里遍历?
  • 是否为 存储过程 / 脚本 / 应用代码?

我可以直接给你可复制用的示例。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI
助
手