我们知道当创建一个游标时,相应有一个错误处理机制。但是两个游标时,好像不太好处理。比如

    declare curl_store_id CURSOR FOR select `id` from `dev_store` where `merchant_id` = old.id;
    declare CONTINUE HANDLER FOR NOT FOUND SET store_stop_flag = 1;
    
    declare curl_user_id CURSOR FOR select `user_id` from `dev_user_particular` where `merchant_id` = old.id;
    declare CONTINUE HANDLER FOR NOT FOUND SET user_stop_flag = 1;
这样定义是错误的。那么如何创建呐??大虾们能否帮帮忙呀?

解决方案 »

  1.   

        declare curl_store_id CURSOR FOR select `id` from `dev_store` where `merchant_id` = old.id;
        declare curl_user_id CURSOR FOR select `user_id` from `dev_user_particular` where `merchant_id` = old.id;    declare CONTINUE HANDLER FOR NOT FOUND SET user_stop_flag = 1;只能有一个 HANDLER ,然后利用中间变量处理。
      

  2.   


    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 SQLSTATE '02000' 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
      

  3.   

    FC_LAMP (FC_LAMP)
      '截至2010-10-20 11:21:36  用户结帖率6.67%当您的问题得到解答后请及时结贴.
    http://topic.csdn.net/u/20090501/15/7548d251-aec2-4975-a9bf-ca09a5551ba5.html
    http://topic.csdn.net/u/20100428/09/BC9E0908-F250-42A6-8765-B50A82FE186A.html
    http://topic.csdn.net/u/20100626/09/f35a4763-4b59-49c3-8061-d48fdbc29561.html8、如何给分和结贴?
    http://community.csdn.net/Help/HelpCenter.htm#结帖