mysql - MySQL 中带游标的存储过程

标签 mysql stored-procedures cursor return

我可以在 MySQL 中将 Cursor 与存储过程一起使用吗?我可以接收它的输出值吗?

最佳答案

是的;

CREATE PROCEDURE curdemo()
BEGIN
  DECLARE done INT DEFAULT 0;
  DECLARE a CHAR(16);
  DECLARE b,c INT;
  DECLARE cur1 CURSOR FOR SELECT id,data FROM test.t1;
  DECLARE cur2 CURSOR FOR SELECT i FROM test.t2;
  DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;

  OPEN cur1;
  OPEN cur2;

  REPEAT
    FETCH cur1 INTO a, b;
    FETCH cur2 INTO c;
    IF NOT done THEN
       IF b < c THEN
          INSERT INTO test.t3 VALUES (a,b);
       ELSE
          INSERT INTO test.t3 VALUES (a,c);
       END IF;
    END IF;
  UNTIL done END REPEAT;

  CLOSE cur1;
  CLOSE cur2;
END

示例取自 the manual .

关于mysql - MySQL 中带游标的存储过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2928743/

相关文章:

mysql - 从外部数据源更新 SQL 表而不先删除所有条目(但删除不再存在的条目)

mysql - 以原始数据类型从数据库返回值 (Kohana ORM)

java - Spring Rest 从 JSON 生成器调用 JSON 响应大小

c++ - 有可能 "update"一个 QTextCursor 吗?

android - 在 Android 的连续 Activity 中使用相同的数据库而不会发生内存泄漏

mysql - 有限制的汇总?

php - Mysql 查询不会回显所有结果! PHP

MySQL 存储过程和最后插入的行

php - 使用存储过程从数据库中选择?

android - java.lang.IllegalStateException : attempt to re-open an already-closed object On Orientation Change