0

我有一个 MySQL 游标,但我需要将其设置为只读且不可滚动,但如何在存储过程中设置它?

我的存储过程看起来像

DROP PROCEDURE IF EXISTS `GetAllNonprocessedSMSes` €€
CREATE PROCEDURE `GetAllNonprocessedSMSes`()
   BEGIN
      ...
      DECLARE id_cur CURSOR FOR
         SELECT `id` FROM (
            SELECT
               MIN(`id`) AS `id`
            FROM
               `inbox`
            WHERE
               `Processed`='false'
               AND `udh`=''
         ) AS `baseview`
      ORDER BY `id`;

      DECLARE CONTINUE HANDLER FOR NOT FOUND SET finish = TRUE;

      OPEN id_cur;
      the_loop : LOOP
         FETCH id_cur INTO smsid;
         ...
      END LOOP the_loop;

      ...
   END €€
4

1 回答 1

1

您没有提及您使用的是哪个版本的 MySql,但根据MySQL 5.0 参考手册

“MySQL 支持存储程序中的游标。语法与嵌入式 SQL 中的一样。游标具有以下属性:
- 不敏感:服务器可能会或可能不会复制其结果表
- 只读:不可更新
- 不可滚动:只能遍历在一个方向,不能跳过行”

因此,我会说 MySql 游标根据定义是只读且不可滚动的!

于 2012-05-03T12:35:01.997 回答