반응형
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
반응형
'code' 카테고리의 다른 글
정적 라이브러리에서 iOS 링커 오류가 발생하는 이유는 무엇입니까? (0) | 2023.10.25 |
---|---|
jQuery: 어떻게 하면 간단한 오버레이를 만들 수 있습니까? (0) | 2023.10.25 |
Git stash: "더러운 작업 트리에 적용할 수 없습니다. 변경 사항을 스테이징하십시오." (0) | 2023.10.25 |
CoreData와 REST 웹 서비스를 비동기적으로 동기화하면서 동시에 REST 오류를 UI에 적절하게 전파하는 방법 (0) | 2023.10.25 |
부트스트랩 4: 드롭다운 메뉴가 화면 오른쪽으로 꺼집니다. (0) | 2023.10.25 |