2016-11-28 3 views
-1

私はMySQLにストアドプロシージャを書いています。日付から整数値に1日の値をキャストする際に問題が発生しています。 Day(now())を整数にキャストする必要があります。この値を操作する必要があります。このMySQLストアドプロシージャの構文エラーをデバッグするには?

手順コードの詳細については、下記を参照してください。

DROP PROCEDURE IF EXISTS `CREATE_PARTITION_FOR_MONTH`(); 
delimiter // 
CREATE PROCEDURE `CREATE_PARTITION_FOR_MONTH`() 
BEGIN 
    DECLARE current_month_total_days_count INT; 
    DECLARE current_month_days_left INT; 
    DECLARE current_day INT; 
    DECLARE next_month_first_date DATE ; 
    DECLARE loop_start_val INT DEFAULT 0; 
    DECLARE total_days_in_next_month INT; 
    DECLARE next_month_var_date DATE; 
    DECLARE partition_val VARCHAR(20) DEFAULT NULL; 
    DECLARE range_val INT DEFAULT 0; 
    SET current_month_total_days_count := CAST(DAY(LAST_DAY(now())) AS UNSIGNED); 
    SET current_day := CAST(EXTRACT(MONTH FROM CURDATE()) AS UNSIGNED); 
    SET current_month_days_left := current_month_total_days_count - current_day; 
    SET next_month_first_date := DATE(ADDDATE(CURDATE(),current_month_days_left)); 
    SET total_days_in_next_month := DAY(LAST_DAY(next_month_first_date)); 
    SET next_month_var_date := next_month_first_date; 
     SET loop_start_val := 0; 
    WHILE loop_start_val < total_days_in_next_month DO 
      SET next_month_var_date := DATE(ADDDATE(next_month_first_date,loop_start_val)); 
      SET partition_val := CONCAT('p',TO_DAYS(next_month_var_date)); 
      SET range_val := TO_DAYS(next_month_var_date); 
      ALTER TABLE XYZ ADD PARTITION (PARTITION partition_val VALUES LESS THAN (range_val));  
      SET loop_start_val := loop_start_val+1; 

    END WHILE; 

END //; 

DELIMITER ; 

は、私はこのエラー

ERROR 1064(42000)を取得しています:あなたは、あなたのSQL構文でエラーが発生しています。あなたのMySQLサーバのバージョンに対応するマニュアルをチェックして、正しい構文がrange_val INT DEFAULT 0付近で使用できるようにしてください。 SETのcurrent_month_total_days_count = SELECT CAST(DAY(エラー*DELCARE* range_val INT DEFAULT 0;をスローラインでライン11

+2

'DELCARE'タイプミス。 –

+0

MySQLのエラーメッセージを読む方法を学んでください。 –

+0

ご意見ありがとうございます。 – Abhimanyu

答えて

0

ルックでL」... DELCAREが問題である。DECLAREであるべき。おかしい...

+0

私はさらに編集しましたstion、私は行の構文エラーを取得しています SET next_month_var_date:= DATE(ADDDATE(next_month_first_date、loop_start_val)); – Abhimanyu

+0

どうぞ、これを別途ご質問いただきますようお願いいたします。 – Rahul

関連する問題