संग्रहीत कार्यविधियाँ / कार्य की सूची मैसूरल कमांड लाइन


474

मैं mysql कमांड लाइन में संग्रहीत प्रक्रियाओं या संग्रहीत कार्यों की सूची को कैसे देख सकता हूं, जैसे show tables;या show databases;कमांड।

जवाबों:


743
SHOW PROCEDURE STATUS;
SHOW FUNCTION STATUS;

2
क्या वर्तमान संग्रहीत कार्यविधि नाम खोजने का कोई तरीका है? मेरा मानना ​​है कि यह object_name(@@procid) SSMS में MySql में ऐसा कुछ है?
मोहम्मद ज़मीर

1
यदि उपयोगकर्ता को विशेषाधिकार प्राप्त है EXECUTE, या फिर, यह खाली सूची दिखाएगा।
mjb

211
show procedure status

आप संग्रहीत प्रक्रियाओं को दिखाएगा।

show create procedure MY_PROC

आपको एक प्रक्रिया की परिभाषा दिखाएगा। तथा

help show

आपको showकमांड के लिए सभी उपलब्ध विकल्प दिखाएंगे ।


1
जैसा कि कोडलर ने बताया, हेल्प शो काम नहीं करता क्योंकि मदद एक mysql कमांड लाइन निर्देश है। SHOW कमांड के बारे में अधिक जानकारी प्राप्त करने के लिए, MySQL प्रलेखन पृष्ठ पर सीधे जाएँ: dev.mysql.com/doc/refman/5.1/en/show.html
IvanD

2
वैसे मुझे यकीन नहीं है कि आप ऐसा क्यों कहते हैं, मेरे लिए MySQL 5.0.95 सेंटोस 6.3 का उपयोग करके शो ठीक काम करता है
h4unt3r

यह काम करता है अगर आप mysqls के अपने कमांड लाइन क्लाइंट का उपयोग करते हैं। मैं नहीं करता, इसलिए मैं ऑनलाइन संदर्भ पसंद करता हूं।
लेहंड

यह सबसे अच्छा जवाब है
कोलोब कैनियन

87

नाम वार में प्रक्रिया देखने के लिए

select name from mysql.proc 

सभी प्रक्रिया को सूचीबद्ध करने के लिए नीचे दिए गए कोड का उपयोग किया जाता है और नीचे दिए गए कोड शो प्रक्रिया की स्थिति के समान परिणाम देते हैं

select * from mysql.proc 

4
यदि आप एक छोटे टर्मिनल में हैं तो यह विशेष रूप से दूसरों की तुलना में बहुत अधिक स्वच्छ प्रस्तुति है। धन्यवाद।
user1527227

मैंने इस उत्तर को select db,name,type from mysql.proc where db<>'sys';थोड़ा और अधिक जानकारी के लिए विकसित किया , और कम अंतर्निहित सिस्टम kruft।
14:33 पर pbelineson

47

अधिक विशिष्ट तरीका:

SHOW PROCEDURE STATUS 
WHERE Db = DATABASE() AND Type = 'PROCEDURE'

4
यह और टाइप = 'प्रक्रिया' का उपयोग किए बिना भी काम करेगा,
normalUser

33

जैसा कि ऊपर उल्लेख किया गया है,

show procedure status;

वास्तव में प्रक्रियाओं की एक सूची दिखाएगा, लेकिन उन सभी को दिखाता है, सर्वर-वाइड।

यदि आप किसी एकल डेटाबेस में केवल देखना चाहते हैं, तो यह प्रयास करें:

SHOW PROCEDURE STATUS WHERE Db = 'databasename';

इसी तरह, SHOW FUNCTION STATUS जहां Db = 'databasename'; आपको कार्य देता है।
डेविड ए। ग्रे


21

मेरी प्राथमिकता कुछ के लिए है:

  1. दोनों कार्यों और प्रक्रियाओं को सूचीबद्ध करता है,
  2. आइए जानते हैं कौन से हैं कौन से उपाय,
  3. प्रक्रियाओं के नाम और प्रकार देता है और कुछ नहीं ,
  4. वर्तमान डेटाबेस द्वारा फ़िल्टर परिणाम, वर्तमान निश्चित नहीं
  5. परिणाम बताता है

इस सूत्र में अन्य उत्तरों से एक साथ सिलाई करते हुए, मैं समाप्त करता हूं

select 
  name, type 
from 
  mysql.proc 
where 
  db = database() 
order by 
  type, name;

... जो आपको इस तरह दिखने वाले परिणामों के साथ समाप्त करता है:

mysql> select name, type from mysql.proc where db = database() order by type, name;
+------------------------------+-----------+
| name                         | type      |
+------------------------------+-----------+
| get_oldest_to_scan           | FUNCTION  |
| get_language_prevalence      | PROCEDURE |
| get_top_repos_by_user        | PROCEDURE |
| get_user_language_prevalence | PROCEDURE |
+------------------------------+-----------+
4 rows in set (0.30 sec)

टिप्पणियाँ भी सहायक होती हैं।
dolmen


11

सभी संग्रहीत कार्यविधियाँ दिखाता है:

SHOW PROCEDURE STATUS;

सभी कार्य दिखाता है:

SHOW FUNCTION STATUS;

निर्दिष्ट प्रक्रिया की परिभाषा दिखाता है:

SHOW CREATE PROCEDURE [PROC_NAME];

आपको दिए गए डेटाबेस की सभी प्रक्रियाओं को दिखाता है:

SHOW PROCEDURE STATUS WHERE Db = '[db_name]';

9

प्रवीणकुमार_वी के पोस्ट पर एक बदलाव:

SELECT `name` FROM mysql.proc WHERE db = 'dbname' AND `type` = 'PROCEDURE';
SELECT `name` FROM mysql.proc WHERE db = 'dbname' AND `type` = 'FUNCTION';

.. और इसलिए क्योंकि मुझे कुछ हाउसकीपिंग के बाद समय बचाने की जरूरत थी:

SELECT CONCAT(
     "GRANT EXECUTE ON PROCEDURE `"
    ,`name`
    ,"` TO username@'%'; -- "
    ,`comment`
)
FROM mysql.proc
WHERE db = 'dbname'
AND `type` = 'PROCEDURE';

SELECT CONCAT(
     "GRANT EXECUTE ON FUNCTION `"
    ,`name`
    ,"` TO username@'%'; -- "
    ,`comment`
)
FROM mysql.proc
WHERE db = 'dbname'
AND `type` = 'FUNCTION';

8

सिर्फ तुम्हारा दिखाने के लिए:

SELECT
  db, type, specific_name, param_list, returns
FROM
  mysql.proc
WHERE
  definer LIKE
  CONCAT('%', CONCAT((SUBSTRING_INDEX((SELECT user()), '@', 1)), '%'));

3
निम्न मामलों में कॉलम के नाम, टेबल के नाम आदि डालते हुए, सभी कीवर्ड्स में SQL कीवर्ड्स डालना आम बात है।
सागर


5

यदि आप वर्तमान चयनित डेटाबेस के लिए स्टोर प्रक्रिया को सूचीबद्ध करना चाहते हैं,

SHOW PROCEDURE STATUS WHERE Db = DATABASE();

यह मौजूदा चयनित डेटाबेस के आधार पर रूटीन की सूची देगा

अपने डेटाबेस में कार्यों को सूचीबद्ध करने के लिए अद्यतन

select * from information_schema.ROUTINES where ROUTINE_SCHEMA="YOUR DATABASE NAME" and ROUTINE_TYPE="FUNCTION";

अपने डेटाबेस में रूटीन / स्टोर प्रक्रियाओं को सूचीबद्ध करने के लिए,

select * from information_schema.ROUTINES where ROUTINE_SCHEMA="YOUR DATABASE NAME" and ROUTINE_TYPE="PROCEDURE";

अपने डेटाबेस में तालिकाओं को सूचीबद्ध करने के लिए,

select * from information_schema.TABLES WHERE TABLE_TYPE="BASE TABLE" AND TABLE_SCHEMA="YOUR DATABASE NAME";

अपने डेटाबेस में विचारों को सूचीबद्ध करने के लिए,

विधि 1:

select * from information_schema.TABLES WHERE TABLE_TYPE="VIEW" AND TABLE_SCHEMA="YOUR DATABASE NAME";

विधि 2:

select * from information_schema.VIEWS WHERE TABLE_SCHEMA="YOUR DATABASE NAME";

1
                           show procedure status;

इस आदेश का उपयोग करके आप डेटाबेस में सभी प्रक्रियाओं को देख सकते हैं


0

वर्तमान डेटाबेस की प्रक्रियाओं की सूची का मेरा पसंदीदा प्रतिपादन: नाम, पैरामीटर सूची, टिप्पणी

SELECT specific_name AS name, param_list AS params, `comment`
FROM mysql.proc
WHERE db = DATABASE()
AND type = 'PROCEDURE';

कार्यों के लिए रिटर्न जोड़ें:

SELECT specific_name AS name, param_list AS params, `returns`, `comment`
FROM mysql.proc
WHERE db = DATABASE()
AND type = 'FUNCTION';

0

सभी डेटाबेस के लिए उपयोगकर्ता की प्रक्रियाओं और कार्यों को सूचीबद्ध करें :

SELECT 
    `ROUTINE_SCHEMA` AS `database`
    ,`ROUTINE_TYPE` AS `type`
    ,`SPECIFIC_NAME` AS `name`
    ,`DTD_IDENTIFIER` AS `data_type`
FROM 
    `INFORMATION_SCHEMA`.`ROUTINES`
WHERE
  `definer` LIKE
  CONCAT('%', CONCAT((SUBSTRING_INDEX((SELECT user()), '@', 1)), '%'))
ORDER BY
    `database`
    ,`type`
    ,`name`
;

उपयोग में डेटाबेस के लिए उपयोगकर्ता की प्रक्रियाओं और कार्यों को सूचीबद्ध करें :

SELECT 
    `ROUTINE_SCHEMA` AS `database`
    ,`ROUTINE_TYPE` AS `type`
    ,`SPECIFIC_NAME` AS `name`
    ,`DTD_IDENTIFIER` AS `data_type`
FROM 
    `INFORMATION_SCHEMA`.`ROUTINES`
WHERE
  `definer` LIKE
  CONCAT('%', CONCAT((SUBSTRING_INDEX((SELECT user()), '@', 1)), '%'))
AND
   `ROUTINE_SCHEMA` = DATABASE()
ORDER BY
    `type`
    ,`name`
;

-2

सभी प्रक्रियाओं के लिए निम्नलिखित क्वेरी का उपयोग करें:

select * from sysobjects 
where type='p'
order by crdate desc
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.