2016-11-26 12 views
0

私はmysqlプロシージャを使用しているので、私は宿題で苦労しています。 は、奇数を検索し、ループを使用して20-50の間でさえも検索します。 私がコールするMySQLの手順を使用して、このような出力をしたい: total_odd_numbers:15 total_even_numbers:16mysqllプロシージャで20-50の合計偶数と奇数をカウントします。

私はこのような偶数のため合計値アップのために試してみました:

`DELIMITER $$ 

CREATE DEFINER=`root`@`localhost` PROCEDURE `genap`() 
BEGIN 
DECLARE x INT; 
DECLARE str VARCHAR(255); 
declare total int; 

SET x = 20; 
SET str = ''; 
set total = 0; 

loop_label: LOOP 
IF x = 50 THEN 
LEAVE loop_label; 
END IF; 
      SET x =x+1; 

IF (x mod 2) THEN 
ITERATE loop_label; 


ELSE 
       SET str = CONCAT(str,x,','); 
       SET total= total+x; 
END IF; 
     END LOOP;  
     SELECT sum(total); 

END` 
+0

まだ試したことを投稿してください。 SOはスプーンの供給のための場所ではありません。 – SarangK

+0

@SarangKあなたがちょうどそれを渡したいと思わないなら、簡単に –

+0

@Strawberryいいえ、ちょうどループメソッドが必要です、私は私のSQLエディタ –

答えて

0

は、この手順をお試しください:

DROP PROCEDURE IF EXISTS ShowOddEvesBetween; 
DELIMITER ;; 
CREATE PROCEDURE ShowOddEvesBetween(IN fromNum INT, IN toNum INT) 
BEGIN 
DECLARE odds INT DEFAULT 0; 
DECLARE evens INT DEFAULT 0; 
DECLARE x INT; 

SET x = fromNum; 

WHILE x <= toNum DO 
    IF x % 2 THEN 
    SET odds = odds + 1; 
    ELSE 
    SET evens = evens + 1; 
    END IF; 

    SET x = x + 1; 
END WHILE; 

SELECT CONCAT("total_odd_numbers: ", odds, ", total_even_numbers: ", evens) AS "Odds & Evens"; 

END; 
;; 

その後

CALL ShowOddEvesBetween(20, 50); 
それを呼び出します

あなたが望むものを出力します

MariaDB [test]> CALL ShowOddEvesBetween(20, 50); 
+-----------------------------------------------+ 
| Odds & Evens         | 
+-----------------------------------------------+ 
| total_odd_numbers: 15, total_even_numbers: 16 | 
+-----------------------------------------------+ 
1 row in set (0.00 sec) 
+0

@Mei_Rあなたはそれを呼び出した後にエラーが発生しますか?完全なエラーで回答を貼り付けたり更新したりできますか? –

+0

ありがとう、それは、働いた:) –

関連する問題