কোনও প্রক্রিয়া বা ফাংশন কোনও মাইএসকিএল ডাটাবেজে বিদ্যমান কিনা তা আমি কীভাবে জানতে পারি? এবং কোন আবিষ্কার বিকল্প আছে? মত একটিshow procedures;
(যেমন মত show tables;
)
কোনও প্রক্রিয়া বা ফাংশন কোনও মাইএসকিএল ডাটাবেজে বিদ্যমান কিনা তা আমি কীভাবে জানতে পারি? এবং কোন আবিষ্কার বিকল্প আছে? মত একটিshow procedures;
(যেমন মত show tables;
)
উত্তর:
SHOW PROCEDURE STATUS
SHOW FUNCTION STATUS
এই ধরণের প্রশ্নের জেনেরিক উত্তর হ'ল সমস্ত মাইএসকিউএল ডাটাবেসে ইনফরমেশন_সেমিমা নামে একটি ডাটাবেস অন্তর্ভুক্ত থাকে যার মধ্যে আপনি কেবল জিজ্ঞাসা করতে পারেন সারণী হিসাবে সমস্ত মেটাডেটা অন্তর্ভুক্ত রয়েছে।
আপনি যে তথ্যটি চান তা হ'ল রোটিনস নামে একটি সারণীতে । উদাহরণ স্বরূপ:
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 ;
গাইউসের কাছ থেকে উত্তরটি স্পিন অফ করুন
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');