MYSQL存储过程插入某个表数据,不包括法定节假
时间: 2024-12-11 21:36:35 浏览: 4
MySQL 存储过程是一种预编译的SQL脚本,可以在数据库内部执行复杂的业务逻辑。如果你想通过存储过程插入数据到某张表,并排除法定节假日的数据,你可以创建一个这样的存储过程:
```sql
DELIMITER //
CREATE PROCEDURE InsertDataExcludingHolidays(IN data_to_insert DATE)
BEGIN
DECLARE holiday_date CURDATE();
WHILE holiday_date = WEEKDAY(data_to_insert) DO
SET holiday_date = ADDDATE(holiday_date, INTERVAL 1 DAY);
END WHILE;
IF holiday_date NOT IN (SELECT holiday_date FROM holidays_table WHERE date = WEEKDAY(data_to_insert)) THEN
INSERT INTO your_table (column1, column2, ...) VALUES (?, ?, ...); -- 这里用问号代替实际值
END IF;
END; //
DELIMITER ;
```
在这个例子中,我们首先定义了一个变量`holiday_date`用于存储当前日期,然后检查这个日期是否为法定假日。如果不是,才插入数据。你需要替换`holidays_table`为实际存储法定节日的表名,以及`your_table`为你需要插入数据的目标表名。
要调用这个存储过程并传入数据,可以这样做:
```sql
CALL InsertDataExcludingHolidays(CURRENT_DATE());
```
阅读全文