it-swarm.asia

Bagaimana saya mengetahui jika ada prosedur atau fungsi dalam database mysql?

Bagaimana saya mengetahui jika ada prosedur atau fungsi dalam database mysql? dan apakah ada opsi penemuan? seperti show procedures; (mis. suka show tables;)

18
xenoterracide
SHOW PROCEDURE STATUS
SHOW FUNCTION STATUS

Lihat pertanyaan StackOverflow terkait .

19
BenV

Jawaban umum untuk jenis pertanyaan ini adalah bahwa semua database MySQL menyertakan database bernama information_schema yang mencakup semua metadata sebagai tabel yang bisa Anda query.

Informasi yang Anda inginkan ada dalam tabel bernama [~ # ~] rutin [[# #]] . Sebagai contoh:

SELECT ROUTINE_NAME 
FROM INFORMATION_SCHEMA.ROUTINES 
WHERE 
       ROUTINE_TYPE="PROCEDURE" 
   AND ROUTINE_SCHEMA="dbname"
;
26
Gaius

gunakan fungsi berikut:

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 ;
1
sassman

Putar jawaban dari Gayus

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');
0
user2242225