Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да настроя WHILE цикъл с оператор IF в MySQL?

Открих, че не можете да имате условни условия извън съхранената процедура в mysql. Ето защо синтактичната грешка. Веднага след като поставя кода, който ми трябваше между

BEGIN
SELECT MONTH(CURDATE()) INTO @curmonth;
SELECT MONTHNAME(CURDATE()) INTO @curmonthname;
SELECT DAY(LAST_DAY(CURDATE())) INTO @totaldays;
SELECT FIRST_DAY(CURDATE()) INTO @checkweekday;
SELECT DAY(@checkweekday) INTO @checkday;
SET @daycount = 0;
SET @workdays = 0;

  WHILE(@daycount < @totaldays) DO
    IF (WEEKDAY(@checkweekday) < 5) THEN
      SET @workdays = @workdays+1;
    END IF;
    SET @daycount = @daycount+1;
    SELECT ADDDATE(@checkweekday, INTERVAL 1 DAY) INTO @checkweekday;
  END WHILE;
END

Само за други :

Ако не сте сигурни как да създадете рутина в phpmyadmin, можете да поставите това в SQL заявката

delimiter ;;
drop procedure if exists test2;;
create procedure test2()
begin
select ‘Hello World’;
end
;;

Изпълнете заявката. Това ще създаде съхранена процедура или съхранена рутина с име test2. Сега отидете в раздела рутини и редактирайте съхранената процедура, за да бъде това, което искате. Предлагам също да прочетете http://net.tutsplus.com/ уроци/въведение-в-съхранените-процедури/ ако започвате със запомнени процедури.

Функцията first_day, от която се нуждаете, е:Как да получа първия ден от всеки съответен месец в mysql?

Показва се, че процедурата работи Просто добавете следния ред под END WHILE и над END

SELECT @curmonth,@curmonthname,@totaldays,@daycount,@workdays,@checkweekday,@checkday;

След това използвайте следния код в прозореца на SQL заявката.

call test2 /* or whatever you changed the name of the stored procedure to */

ЗАБЕЛЕЖКА: Ако използвате това, моля, имайте предвид, че този код не взема под внимание националните празници (или всякакви празници в този смисъл).




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Какво би ми попречило да се свържа към MySQL сървър на AWS RDS от AWS EC2 VM?

  2. MYSQL неправилен формат на DATETIME

  3. Защо java.sql.DriverManager.getConnection(...) виси?

  4. Преобразуване на разделен низ в множество стойности в mysql

  5. Стойността НЕ Е NULL в codeigniter