sp_helptext
Microsoft SQL सर्वर के समान संग्रहीत कार्यविधि या फ़ंक्शन की परिभाषा देखने के लिए MySQL कमांड क्या है ?
मुझे पता है कि SHOW PROCEDURE STATUS
उपलब्ध प्रक्रियाओं की सूची प्रदर्शित करेगा। मुझे एकल प्रक्रिया की परिभाषा देखने की जरूरत है।
sp_helptext
Microsoft SQL सर्वर के समान संग्रहीत कार्यविधि या फ़ंक्शन की परिभाषा देखने के लिए MySQL कमांड क्या है ?
मुझे पता है कि SHOW PROCEDURE STATUS
उपलब्ध प्रक्रियाओं की सूची प्रदर्शित करेगा। मुझे एकल प्रक्रिया की परिभाषा देखने की जरूरत है।
जवाबों:
SHOW CREATE PROCEDURE <name>
पहले से परिभाषित संग्रहीत कार्यविधि का पाठ लौटाता है जो CREATE PROCEDURE
कथन का उपयोग करके बनाया गया था । स्वैप PROCEDURE
के लिए FUNCTION
एक संग्रहीत समारोह के लिए।
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
आप इसका उपयोग कर सकते हैं:
SELECT ROUTINE_DEFINITION FROM INFORMATION_SCHEMA.ROUTINES
WHERE ROUTINE_SCHEMA = 'yourdb' AND ROUTINE_TYPE = 'PROCEDURE' AND ROUTINE_NAME = "procedurename";
mysql.proc
रिटर्न धब्बे के लिए param_list
, returns
और body
... मैं कर रहा हूँ उन्हें पढ़ने में असमर्थ ... आप इसे कैसे किया?
SELECT * FROM information_schema.PARAMETERS WHERE SPECIFIC_SCHEMA='$dbName' AND SPECIFIC_NAME=\"{$row['ROUTINE_NAME']}\" AND NOT PARAMETER_MODE IS NULL ORDER BY ORDINAL_POSITION;
SHOW CREATE PROCEDURE proc_name;
की परिभाषा देता है proc_name
यदि आप प्रक्रियाओं की सूची जानना चाहते हैं, तो आप निम्नलिखित कमांड चला सकते हैं -
show procedure status;
यह आपको प्रक्रियाओं और उनके परिभाषाओं की सूची देगा फिर आप इसे चला सकते हैं show create procedure <procedurename>;
आप तालिका का उपयोग कर सकते proc डेटाबेस में mysql :
mysql> SELECT body FROM mysql.proc
WHERE db = 'yourdb' AND name = 'procedurename' ;
ध्यान दें कि आपके पास mysql.proc को चुनने के लिए अनुदान होना चाहिए :
mysql> GRANT SELECT ON mysql.proc TO 'youruser'@'yourhost' IDENTIFIED BY 'yourpass' ;
कुछ इस तरह:
DELIMITER //
CREATE PROCEDURE alluser()
BEGIN
SELECT *
FROM users;
END //
DELIMITER ;
से अधिक:
SHOW CREATE PROCEDURE alluser
परिणाम देता है:
'alluser', 'STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER', 'CREATE DEFINER=`root`@`localhost` PROCEDURE `alluser`()
BEGIN
SELECT *
FROM users;
END'
एक वैकल्पिक त्वरित और हैकी समाधान यदि आप वहाँ होने वाले सभी ठिकानों का अवलोकन प्राप्त करना चाहते हैं, या केवल प्रक्रिया प्रक्रिया द्वारा दिखाए जाने वाले प्रक्रिया हेडर प्राप्त करने के मुद्दे में भाग लेते हैं:
mysqldump --user=<user> -p --no-data --routines <database>
यह तालिका के विवरणों को भी निर्यात करेगा, लेकिन कोई डेटा नहीं। अज्ञात या भूल गए स्कीमा के आसपास सूँघने के लिए अच्छी तरह से काम करता है ...;)
बिल्कुल सही, यह कोशिश करो:
SELECT ROUTINE_DEFINITION FROM INFORMATION_SCHEMA.ROUTINES
WHERE ROUTINE_SCHEMA = 'yourdb' AND ROUTINE_TYPE = 'PROCEDURE' AND ROUTINE_NAME = "procedurename";