it-swarm.asia

كيف يمكنني معرفة ما إذا كان هناك إجراء أو وظيفة موجودة في قاعدة بيانات الخلية؟

كيف يمكنني معرفة ما إذا كان هناك إجراء أو وظيفة موجودة في قاعدة بيانات الخلية؟ وهل هناك خيار اكتشاف؟ مثل show procedures; (على سبيل المثال ، مثل show tables;)

18
xenoterracide
SHOW PROCEDURE STATUS
SHOW FUNCTION STATUS

راجع سؤال StackOverflow .

19
BenV

الإجابة العامة على هذا النوع من الأسئلة هي أن جميع قواعد بيانات MySQL تتضمن قاعدة بيانات تسمى information_schema والتي تتضمن جميع البيانات الوصفية كجداول يمكنك الاستعلام عنها فقط.

المعلومات التي تريدها في جدول يسمى إجراءات . فمثلا:

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

استخدم الوظيفة التالية:

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

Spin Off للإجابة من Gaius

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