sql >> Database teknologi >  >> RDS >> Mysql

Hvordan opsætter man en WHILE-løkke med IF-sætning i MySQL?

Jeg har opdaget, at du ikke kan have betingelser uden for den lagrede procedure i mysql. Dette er grunden til syntaksfejlen. Så snart jeg lagde den kode, jeg havde brug for mellem

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

Kun for andre :

Hvis du ikke er sikker på, hvordan du opretter en rutine i phpmyadmin, kan du indsætte denne i SQL-forespørgslen

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

Kør forespørgslen. Dette vil oprette en lagret procedure eller lagret rutine ved navn test2. Gå nu til fanen rutiner og rediger den lagrede procedure, så den er den, du ønsker. Jeg foreslår også at læse http://net.tutsplus.com/ selvstudier/en-introduktion til-lagrede-procedurer/ hvis du begynder med lagrede procedurer.

Den første_dag-funktion, du har brug for, er:Hvordan får man den første dag i hver tilsvarende måned i mysql?

Visning af proceduren fungerer Du skal blot tilføje følgende linje under END WHILE og over END

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

Brug derefter følgende kode i SQL-forespørgselsvinduet.

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

BEMÆRK: Hvis du bruger dette, skal du huske på, at denne kode ikke tager højde for nationalt overholdte helligdage (eller nogen helligdage for den sags skyld).




  1. Problemer under import af en txt-fil til postgres ved hjælp af php

  2. jooq - problem med at genkende postgres UNIK begrænsning

  3. MySQL - sum kolonneværdi(er) baseret på række fra samme tabel

  4. oracle transponering af tekstværdirækker til kolonner