>source

저장 프로 시저에 대해 전혀 몰랐습니다. 불행히도 저장 프로 시저를 자동으로 실행해야합니다. 통과라는 표가 있으며 하루가 끝나면 자동으로취소로 상태를 업데이트하고 싶습니다. 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

    방법 # 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 쉘에서 올바르게 실행되는지 테스트 한 경우 스케줄러에서 설정하십시오.

    방법 # 2 MySQL-이벤트 스케줄러

    이벤트 스케줄러를 사용하려면 먼저 서버에서 활성화되어 있는지 확인해야합니다. 기본적으로 그렇지 않습니다. 위에서 언급 한 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; 를 사용하여 예정된 작업에 대한 정보를 볼 수 있어야합니다

관련 자료

  • 이전 jquery - 워드 프레스 - ajax 요청이 콘솔에 400 잘못된 요청을 기록함
  • 다음 sql server - Select 문에서 저장 프로 시저를 호출하는 올바른 구문을 얻을 수없는 것 같습니다