code

MySQL에 없는 경우 생성 프로시저를 말하는 방법

starcafe 2023. 10. 25. 23:26
반응형

MySQL에 없는 경우 생성 프로시저를 말하는 방법

MySQL 데이터베이스에 프로시저를 작성하려고 하는데, 먼저 존재하는지 확인하고 싶습니다.

테이블에 대해 어떻게 하는지는 알고 있지만 저장 프로시저에 대해 동일한 구문을 사용하면 컴파일이 되지 않습니다.

아는 사람?

프로시저가 존재하는 경우 해당 프로시저를 삭제한 후 다시 추가하면 됩니다.

DROP PROCEDURE IF EXISTS my_procedure;
CREATE PROCEDURE my_procedure()
SELECT EXISTS(SELECT 1 FROM mysql.proc p WHERE db = 'db_name' AND name = 'stored_proc_name');

그럼 다음을 수행할 수 있습니다.

IF NOT EXISTS(SELECT 1 FROM mysql.proc p WHERE db = 'db_name' AND name = 'stored_proc_name') THEN
....
END IF;

그것은 존재하지 않는다.동일한 기능을 모방한 저장 프로시저를 작성해야 했습니다.기본적으로 "존재하는 경우" 검사를 수행하는 저장 프로시저를 호출하여 저장 프로시저를 만듭니다.

mySQL 8을 사용하면 IFNOT EXISTES를 사용하여 create 문 내에 존재하는지 확인할 수 있습니다. https://dev.mysql.com/doc/refman/8.0/en/create-procedure.html

CREATE
    [DEFINER = user]
    PROCEDURE [IF NOT EXISTS] sp_name ([proc_parameter[,...]])
    [characteristic ...] routine_body

CREATE
    [DEFINER = user]
    FUNCTION [IF NOT EXISTS] sp_name ([func_parameter[,...]])
    RETURNS type
    [characteristic ...] routine_body

그냥 절차를 불러주세요.

CALL my_procedure();

구체적인 오류가 발생하면

PROCEDURE yourDB.my _procedure이(가) 없습니다.

이제 "Error Code : 1305"에 대응하여 누락된 절차를 작성할 수 있습니다.

CREATE PROCEDURE my_procedure() BEGIN ... END

언급URL : https://stackoverflow.com/questions/9948713/how-to-say-create-procedure-if-not-exists-in-mysql

반응형