mysql 데이터베이스에 프로 시저 또는 함수가 있는지 어떻게 알 수 있습니까? 발견 옵션이 있습니까? 같은 show procedures;
(예를 들어 show tables;
)
mysql 데이터베이스에 프로 시저 또는 함수가 있는지 어떻게 알 수 있습니까? 발견 옵션이 있습니까? 같은 show procedures;
(예를 들어 show tables;
)
답변:
SHOW PROCEDURE STATUS
SHOW FUNCTION STATUS
관련 StackOverflow 질문을 참조하십시오 .
이 유형의 질문에 대한 일반적인 대답은 모든 MySQL 데이터베이스에 모든 메타 데이터를 쿼리 할 수있는 테이블로 포함하는 information_schema 라는 데이터베이스가 포함되어 있다는 것 입니다.
원하는 정보는 ROUTINES 테이블에 있습니다. 예를 들면 다음과 같습니다.
SELECT ROUTINE_NAME
FROM INFORMATION_SCHEMA.ROUTINES
WHERE
ROUTINE_TYPE="PROCEDURE"
AND ROUTINE_SCHEMA="dbname"
;
다음 기능을 사용하십시오.
DELIMITER $$
DROP FUNCTION IF EXISTS f_exists_procedure;$$
CREATE FUNCTION f_exists_procedure(in_name VARCHAR(255))
RETURNS BIT DETERMINISTIC
BEGIN
SELECT COUNT(1) INTO @f_result
FROM information_schema.ROUTINES as info
WHERE info.ROUTINE_SCHEMA = DATABASE() AND info.ROUTINE_TYPE = 'PROCEDURE' AND info.ROUTINE_NAME = in_name;
RETURN @f_result;
END;$$
DELIMITER ;