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 に答える