मुझे कैसे पता चलेगा कि कोई प्रक्रिया या फ़ंक्शन किसी 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 ;
Gaius से जवाब का स्पिन ऑफ
SELECT IF( COUNT(*) = 0, 'F' , 'T' ) AS ProcedureExists
FROM INFORMATION_SCHEMA.ROUTINES
WHERE ROUTINE_SCHEMA = 'someDBName'
AND ROUTINE_TYPE = 'PROCEDURE'
AND UCASE(ROUTINE_NAME) = UCASE('someProcedureName');