【问题标题】:mysql exit sp with ifmysql 退出 sp 与 if
【发布时间】:2017-01-20 01:40:48
【问题描述】:

在下面的 msql sp 中,如果星期几是星期五,我试图退出,但我无法让它工作,因为在“END IF;”处有语法错误。我只是看不到它。

    CREATE PROCEDURE `bookFreeDay`()
    proc_label:BEGIN

  DECLARE bDone INT;
  DECLARE t1 VARCHAR(5);

  -- todo exclude sa/so
  IF DAYOFWEEK(SUBDATE(CURDATE(),1)) = 5 THEN
      LEAVE proc_label;
  END IF;

  DECLARE curs CURSOR FOR select durTime from freeDays where
    (year is not null && year= substring(CURDATE(),1,4) && start=substring(SUBDATE(CURDATE(),1), 6,5))
    || (year is null && start=substring(SUBDATE(CURDATE(),1), 6,5));

  DECLARE CONTINUE HANDLER FOR NOT FOUND SET bDone = 1;

  OPEN curs;

  SET bDone = 0;
  REPEAT
    FETCH curs INTO t1;

        select CONCAT(SUBDATE(CURDATE(),1), " 08:00:00") into @st;
        select addtime(@st, t1) into @en;

       insert into timeEntries
         (select
           null,
           idUsers,
           @st,
           @en,
           null,
           2
         from users
         where right(pensum,1)='%');

  UNTIL bDone END REPEAT;

  CLOSE curs;

END

【问题讨论】:

    标签: mysql if-statement stored-procedures exit


    【解决方案1】:

    14.6.6.2 Cursor DECLARE Syntax

    ...

    游标声明必须出现在处理程序声明之前,并且 在变量和条件声明之后。

    ...

    ...
    
    /*
    -- todo exclude sa/so
    IF DAYOFWEEK(SUBDATE(CURDATE(),1)) = 5 THEN
      LEAVE proc_label;
    END IF;
    */
    
    DECLARE curs CURSOR FOR select durTime
                            from freeDays
                            where (year is not null &&
                                   year= substring(CURDATE(),1,4) &&
                                   start=substring(SUBDATE(CURDATE(),1), 6,5)) ||
                                  (year is null &&
                                   start=substring(SUBDATE(CURDATE(),1), 6,5));
    
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET bDone = 1;
    
    -- todo exclude sa/so
    IF DAYOFWEEK(SUBDATE(CURDATE(),1)) = 5 THEN
      LEAVE proc_label;
    END IF;
    
    ...
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-06
      • 2011-01-05
      • 1970-01-01
      • 2013-09-14
      • 1970-01-01
      相关资源
      最近更新 更多