gpt4 book ai didi

mysql - 如何在Wampserver中编写存储过程以自动运行

转载 作者:行者123 更新时间:2023-11-29 16:03:47 25 4
gpt4 key购买 nike

我对存储过程一无所知。不幸的是我必须自动运行存储过程。我有一个名为 pass 的表,我想在一天结束时自动将状态更新为已取消。我在 wampserver 中使用 phpmyadmin。

我已经尝试过一些代码,但我不知道这段代码是否正确以及如何设置自动执行。

这是我的代码,

 CREATE PROCEDURE MyTask
AS
BEGIN
SET NOCOUNT ON;
SET ANSI_NULLS ON;
SET QUOTED_IDENTIFIER ON;
GO
-- For executing the stored procedure at 1:00 A.M
declare @delayTime nvarchar(50)
set @delayTime = '01:00'

while 1 = 1
BEGIN
waitfor time @delayTime
BEGIN
ALTER PROCEDURE [dbo].[updateDuration] AS
UPDATE pass SET status = 'Cancelled' WHERE duration_type='Daily' && duration = DATE_SUB(CURRENT_DATE(),INTERVAL 1 DAY);
--Name for the stored proceduce you want to call on regular bases
execute [gatepass].[dbo].[updateDuration];
END
END
END

它说要放置下面的代码,但我不知道将它们放在哪里。

-- Sets stored procedure for automatic execution.
sp_procoption @ProcName = 'MyTask',
@OptionName = 'startup',
@OptionValue = 'on'

最佳答案

方法#1 - 批处理

创建一个名为 runMyTask.sql 或任何您想要的脚本。

该脚本应该包含您的 SQL 来运行存储过程:

-- Sets stored procedure for automatic execution.
CALL sp_procoption('MyTask','startup', 'on');

然后您需要一个批处理脚本,您可以将其命名为 runMyTask.bat。

在 .bat 文件中,添加运行 mysql.exe 命令行工具的行,并按照类似这样的行重定向 runMyTask.sql 文件的内容

C:/wamp/bin/mysql/mysql..../bin/mysql -u root --password=your_password database_name < C:/path/to/runMyTask.sql

当您测试批处理脚本从 Windows cmd shell 正确运行时,set it up in the scheduler .

方法 #2 MySQL - 事件调度程序

使用 the event scheduler您需要首先确保它已在服务器上启用。默认情况下不是。从前面提到的 mysql 命令行,以 root 身份登录。

SET GLOBAL event_scheduler = ON;

打开后,运行 SHOW PROCESSLIST;命令,您应该会看到与此类似的一行,显示用户 event_scheduler 拥有一个进程。

| 10729276 | event_scheduler | localhost       | NULL       | Daemon  |    4 | Waiting on empty queue | NULL             |    0.000 |

此时您可以添加“事件”。要将存储过程添加为一个事件,每小时运行一次:

USE your_db;

CREATE EVENT IF NOT EXISTS EventRunMyTask
ON SCHEDULE EVERY 1 HOUR
ENABLE
DO CALL sp_procoption('MyTask','startup', 'on');

如果一切顺利,您应该能够使用SHOW EVENTS;查看有关计划作业的信息。

关于mysql - 如何在Wampserver中编写存储过程以自动运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55932276/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com