私は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
'DELCARE'タイプミス。 –
MySQLのエラーメッセージを読む方法を学んでください。 –
ご意見ありがとうございます。 – Abhimanyu