ฉันจะดูรายการของโพรซีเดอร์ที่เก็บไว้หรือฟังก์ชั่นที่เก็บไว้ใน mysql เช่นบรรทัดคำสั่งshow tables;
หรือshow databases;
คำสั่ง
ฉันจะดูรายการของโพรซีเดอร์ที่เก็บไว้หรือฟังก์ชั่นที่เก็บไว้ใน mysql เช่นบรรทัดคำสั่งshow tables;
หรือshow databases;
คำสั่ง
คำตอบ:
SHOW PROCEDURE STATUS;
SHOW FUNCTION STATUS;
EXECUTE
หรืออื่น ๆ สิ่งนี้จะแสดงรายการที่ว่างเปล่า
show procedure status
จะแสดงขั้นตอนการจัดเก็บ
show create procedure MY_PROC
จะแสดงคำจำกัดความของขั้นตอน และ
help show
จะแสดงตัวเลือกทั้งหมดที่มีให้สำหรับshow
คำสั่ง
สำหรับขั้นตอนการดูในชื่อฉลาด
select name from mysql.proc
โค้ดด้านล่างที่ใช้เพื่อแสดงรายการขั้นตอนทั้งหมดและโค้ดด้านล่างให้ผลเหมือนกับการแสดงสถานะขั้นตอน
select * from mysql.proc
select db,name,type from mysql.proc where db<>'sys';
เพื่อให้ได้ข้อมูลมากขึ้นและระบบ kruft ในตัวน้อยลง
วิธีเฉพาะเจาะจงมากขึ้น:
SHOW PROCEDURE STATUS
WHERE Db = DATABASE() AND Type = 'PROCEDURE'
ดังกล่าวข้างต้น
show procedure status;
จะแสดงรายการของโพรซีเดอร์ แต่จะแสดงทั้งหมดในเซิร์ฟเวอร์
ถ้าคุณต้องการที่จะเห็นเพียงคนเดียวในฐานข้อมูลเดียวลองนี้:
SHOW PROCEDURE STATUS WHERE Db = 'databasename';
ทางเลือก:
SELECT * FROM INFORMATION_SCHEMA.ROUTINES
ความชอบของฉันสำหรับสิ่งที่:
ฉันต่อท้ายคำตอบอื่น ๆ เข้าด้วยกันในหัวข้อนี้
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)
ใช้สิ่งนี้:
SHOW PROCEDURE STATUS;
แสดงกระบวนงานที่เก็บไว้ทั้งหมด:
SHOW PROCEDURE STATUS;
แสดงฟังก์ชั่นทั้งหมด:
SHOW FUNCTION STATUS;
แสดงนิยามของโพรซีเดอร์ที่ระบุ:
SHOW CREATE PROCEDURE [PROC_NAME];
แสดงขั้นตอนทั้งหมดของฐานข้อมูลที่ระบุ:
SHOW PROCEDURE STATUS WHERE Db = '[db_name]';
รูปแบบที่โพสต์ของ Praveenkumar_V:
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';
หากต้องการแสดงเฉพาะของคุณ:
SELECT
db, type, specific_name, param_list, returns
FROM
mysql.proc
WHERE
definer LIKE
CONCAT('%', CONCAT((SUBSTRING_INDEX((SELECT user()), '@', 1)), '%'));
SELECT specific_name FROM `information_schema`.`ROUTINES` WHERE routine_schema='database_name'
หากคุณต้องการแสดงขั้นตอนการจัดเก็บสำหรับฐานข้อมูลที่เลือกในปัจจุบัน
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";
show procedure status;
ใช้คำสั่งนี้คุณสามารถดูขั้นตอนทั้งหมดในฐานข้อมูล
การแสดงที่ชื่นชอบของรายการขั้นตอนของฐานข้อมูลปัจจุบัน: ชื่อรายการพารามิเตอร์ความคิดเห็น
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';
ทำรายการขั้นตอนและฟังก์ชั่นของผู้ใช้สำหรับฐานข้อมูลทั้งหมด :
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`
;
ใช้แบบสอบถามต่อไปนี้สำหรับขั้นตอนทั้งหมด:
select * from sysobjects
where type='p'
order by crdate desc
object_name(@@procid)
อยู่ใน SSMS อะไรเช่นนี้ใน MySql?