我对存储过程一无所知。不幸的是,我必须自动运行存储过程。
我有一个名为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/

10-11 03:11
查看更多