Saklı Yordamlar / İşlevler Listesi Mysql Komut Satırı


Yanıtlar:


743
SHOW PROCEDURE STATUS;
SHOW FUNCTION STATUS;

2
Mevcut saklı yordam adını bulmanın bir yolu var mı? object_name(@@procid) MySql'de SSMS'de böyle bir şey olduğuna inanıyorum ?
— Mohammed Zameer

1
Kullanıcının ayrıcalık EXECUTEveya başka bir hakkı varsa , bu boş liste gösterir.
— mjb

211
show procedure status

saklı yordamları gösterecektir.

show create procedure MY_PROC

size bir prosedürün tanımını gösterecektir. Ve

help show

size showkomut için kullanılabilir tüm seçenekleri gösterecektir .


1
Codler'ın işaret ettiği gibi, yardım bir mysql komut satırı talimatı olduğu için yardım gösterisi çalışmaz. SHOW komutu hakkında daha fazla bilgi almak için doğrudan şu adresteki
— IvanD

2
Peki neden söylediğini bilmiyorum, yardım gösterisi benim için iyi çalışıyor centos 6.3 MySQL 5.0.95 kullanarak
— h4unt3r

Eğer mysqls kendi komut satırı istemcisini kullanırsanız çalışır. Yapmıyorum, bu yüzden çevrimiçi referansı tercih ediyorum.
— Ledhund

Bu en iyi cevap
— Kolob Kanyonu

87

Akıllıca adlandırma prosedürü için

select name from mysql.proc 

Tüm prosedürleri listelemek için kullanılan aşağıdaki kod ve aşağıdaki kod, prosedür durumunu göster ile aynı sonucu verir

select * from mysql.proc 

4
Bu, özellikle daha küçük bir terminalde iseniz, diğerlerinden çok daha temiz bir sunumdur. Teşekkürler.
— user1527227

Bu cevabı select db,name,type from mysql.proc where db<>'sys';biraz daha fazla bilgi ve daha az yerleşik sistem kruftu için geliştirdim.
— pbnelson

47

Daha spesifik bir yol:

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

4
AND Type = 'PROCEDURE' kullanmadan da
— çalışacaktır

33

Yukarıda da belirtildiği gibi,

show procedure status;

Gerçekten prosedürlerin listesi, ancak gösteriler gösterecek tüm bunların, sunucu genelinde.

Yalnızca tek bir veritabanında bulunanları görmek istiyorsanız şunu deneyin:

SHOW PROCEDURE STATUS WHERE Db = 'databasename';

Benzer şekilde, İŞLEV DURUMUNU NEREDE GÖSTER Db = 'veritabanıadı'; size fonksiyonları verir.
— David A. Gray


21

Benim tercihim şudur:

  1. Hem fonksiyonları hem de prosedürleri listeler,
  2. Hangisinin hangisi olduğunu bilmeme izin verin,
  3. Prosedürlerin isimlerini ve türlerini verir, başka bir şey vermez ,
  4. Sonuçları geçerli tanımlayıcıya göre değil, geçerli veritabanına göre filtreler
  5. Sonucu sıralar

Bu konudaki diğer cevaplardan bir araya gelerek, sonunda

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

... sonuç olarak şöyle görünür:

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)

Yorumlar da faydalıdır.
— dolmen


11

Saklı yordamların tümünü gösterir:

SHOW PROCEDURE STATUS;

Tüm işlevleri gösterir:

SHOW FUNCTION STATUS;

Belirtilen prosedürün tanımını gösterir:

SHOW CREATE PROCEDURE [PROC_NAME];

Verilen veritabanının tüm prosedürlerini gösterir:

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

9

Praveenkumar_V'un gönderisinde bir varyasyon:

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

..ve bu bazı temizlikten sonra zaman kazanmam gerektiğinden:

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

Yalnızca sizinkileri göstermek için:

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

3
Sütun adlarını, tablo adlarını vb. Küçük harflerle yazarken, SQL anahtar kelimelerini tüm büyük harflere koymak yaygın bir yöntemdir.
— Sagar

8
SELECT specific_name FROM `information_schema`.`ROUTINES` WHERE routine_schema='database_name'

5

Geçerli Seçili Veritabanı için Mağaza Yordamını listelemek istiyorsanız,

SHOW PROCEDURE STATUS WHERE Db = DATABASE();

mevcut seçili Veritabanına göre Rutinleri listeler

Veritabanınızdaki işlevleri listelemek için GÜNCELLENDİ

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

veritabanınızdaki rutinleri / saklama prosedürlerini listelemek,

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

veritabanınızdaki tabloları listelemek,

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

veritabanınızdaki görünümleri listelemek için,

Yöntem 1:

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

yöntem 2:

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

1
                           show procedure status;

bu komutu kullanarak veritabanlarındaki tüm prosedürleri görebilirsiniz


0

Geçerli veritabanının yordamlar listesini en sevdiğim oluşturma: ad, parametre listesi, yorum

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

İşlevler için iade ekleyin:

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

0

Tüm veritabanları için kullanıcının prosedürlerini ve işlevlerini listeleyin :

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`
;

Kullanımdaki veritabanı için kullanıcının prosedürlerini ve işlevlerini listeleyin :

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

Tüm yordamlar için aşağıdaki sorguyu kullanın:

select * from sysobjects 
where type='p'
order by crdate desc
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.