MySQL - SHOW FUNCTION STATUS 語句



MySQL SHOW FUNCTION STATUS 語句

函式是由組織良好的、可重複使用的程式碼塊組成的,用於執行單個相關的操作。函式為您的應用程式提供了更好的模組化和高度的程式碼重用性。您可以使用 CREATE FUNCTION 語句建立儲存函式。

MySQL SHOW FUNCTION STATUS 語句顯示儲存函式的特性。它提供以下資訊:

  • 過程的名稱。
  • 建立它的資料庫。
  • 過程的型別。
  • 過程的建立者。
  • 修改日期等……

語法

以下是 SHOW FUNCTION STATUS 語句的語法:

SHOW FUNCTION STATUS
   [LIKE 'pattern' | WHERE expr]

示例

以下語句顯示儲存函式的特性:

SHOW FUNCTION STATUS\G;

輸出

以上查詢產生如下所示的輸出:

************** 1. row **************
                  Db: test
                Name: areaOfCircle
                Type: FUNCTION
             Definer: root@localhost
            Modified: -------------------
             Created: -------------------
       Security_type: DEFINER
             Comment:
character_set_client: cp850
collation_connection: cp850_general_ci
  Database Collation: utf8mb4_0900_ai_ci
************** 2. row **************
                  Db: test
                Name: demo
                Type: FUNCTION
             Definer: root@localhost
            Modified: -------------------
             Created: -------------------
       Security_type: DEFINER
             Comment:
character_set_client: cp850
collation_connection: cp850_general_ci
  Database Collation: utf8mb4_0900_ai_ci
************** 3. row **************
                  Db: test
                Name: sample
                Type: FUNCTION
             Definer: root@localhost
            Modified: -------------------
             Created: -------------------
       Security_type: DEFINER
             Comment:
character_set_client: cp850
collation_connection: cp850_general_ci
  Database Collation: utf8mb4_0900_ai_ci
************** 4. row **************
                  Db: test
                Name: while_example
                Type: FUNCTION
             Definer: root@localhost
            Modified: -------------------
             Created: -------------------
       Security_type: DEFINER
             Comment:
character_set_client: cp850
collation_connection: cp850_general_ci
  Database Collation: utf8mb4_0900_ai_ci
************** 5. row **************
                  Db: test
                Name: test
                Type: FUNCTION
             Definer: root@localhost
            Modified: -------------------
             Created: -------------------
       Security_type: DEFINER
             Comment:
character_set_client: cp850
collation_connection: cp850_general_ci
  Database Collation: utf8mb4_0900_ai_ci
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . .

LIKE 子句

使用 LIKE 子句,您可以指定模式來檢索有關函式的資訊。

示例

假設我們已經建立了一個新的資料庫,並使用如下所示的 CREATE 語句在其中建立了 3 個函式:

CREATE demo;
use dem;
database changed
DELIMITER //
CREATE FUNCTION TestAdd(a INT, b INT) RETURNS INT DETERMINISTIC
   BEGIN
      DECLARE res INT;
      SET res=a+b;
      RETURN res;
   END//
   Query OK, 0 rows affected (0.29 sec)
CREATE FUNCTION TestSub (a INT, b INT) RETURNS INT DETERMINISTIC
   BEGIN
      DECLARE res INT;
      SET res=a-b;
      RETURN res;
   END//
   Query OK, 0 rows affected (0.29 sec)
CREATE FUNCTION TestMul (a INT, b INT) RETURNS INT DETERMINISTIC
   BEGIN
      DECLARE res INT;
      SET res=a*b;
      RETURN res;
   END//
   Query OK, 0 rows affected (0.29 sec)
CREATE FUNCTION TestDiv (a INT, b INT) RETURNS INT DETERMINISTIC
   BEGIN
      DECLARE res INT;
      SET res=a/b;
      RETURN res;
   END//
   Query OK, 0 rows affected (0.29 sec)
DELIMITER ;

以下查詢檢索名稱以“Test”開頭的過程資訊。

SHOW FUNCTION STATUS LIKE 'Test%'\G;

輸出

查詢執行後,將產生以下輸出:

************** 1. row **************
                  Db: demo
			    Name: TestAdd
			    Type: FUNCTION
		     Definer: root@localhost
		    Modified: 2021-05-14 06:37:04
		     Created: 2021-05-14 06:37:04
       Security_type: DEFINER
		     Comment: 
character_set_client: cp850
collation_connection: cp850_general_ci
  Database Collation: utf8mb4_0900_ai_ci
************** 2. row **************
                  Db: demo
			    Name: TestDiv
			    Type: FUNCTION
		     Definer: root@localhost
		    Modified: 2021-05-14 06:37:22
		     Created: 2021-05-14 06:37:22
       Security_type: DEFINER
		     Comment: 
character_set_client: cp850
collation_connection: cp850_general_ci
  Database Collation: utf8mb4_0900_ai_ci
************** 3. row **************
                  Db: demo
			    Name: TestMul
			    Type: FUNCTION
		     Definer: root@localhost
		    Modified: 2021-05-14 06:37:16
		     Created: 2021-05-14 06:37:16
       Security_type: DEFINER
		     Comment: 
character_set_client: cp850
collation_connection: cp850_general_ci
  Database Collation: utf8mb4_0900_ai_ci
************** 4. row **************
                  Db: demo
			    Name: TestSub
			    Type: FUNCTION
		     Definer: root@localhost
		    Modified: 2021-05-14 06:37:10
		     Created: 2021-05-14 06:37:10
       Security_type: DEFINER
		     Comment: 
character_set_client: cp850
collation_connection: cp850_general_ci
  Database Collation: utf8mb4_0900_ai_ci

WHERE 子句

您可以使用 SHOW PROCEDURE STATUS 語句的 WHERE 子句來檢索與指定條件匹配的過程資訊。

示例

假設我們已經使用 CREATE 語句建立了一個名為 Emp 的表,如下所示:

CREATE TABLE Emp(Name VARCHAR(255), DOB DATE, Location VARCHAR(255));

現在,讓我們使用 INSERT 語句向 Emp 表中插入一些記錄:

INSERT INTO Emp VALUES 
('Amit', DATE('1970-01-08'), 'Hyderabad'),
('Sumith', DATE('1990-11-02'), 'Vishakhapatnam'),
('Sudha', DATE('1980-11-06'), 'Vijayawada');

假設我們建立了一個 `getDob()` 函式,它接受員工的姓名作為引數,檢索並返回 DOB 列的值。

DELIMITER //
CREATE FUNCTION test.getDob(emp_name VARCHAR(50))
   RETURNS DATE
   DETERMINISTIC
   BEGIN
      declare dateOfBirth DATE;
      select DOB into dateOfBirth from test.emp where Name = emp_name;
      return dateOfBirth;
   END//
DELIMITER ;

同樣,如果我們建立了另一個表,如下所示:

CREATE TABLE student (Name VARCHAR(100), Math INT, English INT, 
Science INT, History INT);

讓我們向 student 表中插入一些記錄:

INSERT INTO student values
('Raman', 95, 89, 85, 81),
('Rahul' , 90, 87, 86, 81),
('Mohit', 90, 85, 86, 81),
('Saurabh', NULL, NULL, NULL, NULL );

以下函式更新了上面建立的表:

Create Function test.tbl_Update(S_name Varchar(50), M1 INT, 
M2 INT, M3 INT, M4 INT)
   RETURNS INT
   DETERMINISTIC
   BEGIN
      UPDATE student SET Math = M1, English = M2, Science = M3, 
	  History = M4 WHERE Name = S_name;
      RETURN 1;
   END //
DELIMITER ;

您可以使用 SHOW FUNCTION STATUS 語句驗證資料庫中的函式列表,如下所示:

SHOW FUNCTION STATUS WHERE db = 'test'\G;

輸出

以上查詢產生以下輸出:

************** 1. row **************
                     Db: test
				   Name: getDob
				   Type: FUNCTION
				Definer: root@localhost
			   Modified: 2021-03-21 11:21:12
				Created: 2021-03-13 14:45:36
		  Security_type: DEFINER
				Comment: This is a sample comment
   character_set_client: cp850
   collation_connection: cp850_general_ci
	 Database Collation: utf8mb4_0900_ai_ci
************** 2. row **************
                     Db: test
				   Name: tbl_Update
				   Type: FUNCTION
				Definer: root@localhost
			   Modified: 2021-03-13 22:16:05
				Created: 2021-03-13 22:16:05
		  Security_type: DEFINER
				Comment: 
   character_set_client: cp850
   collation_connection: cp850_general_ci
	 Database Collation: utf8mb4_0900_ai_ci

以下查詢刪除上面建立的函式:

DROP FUNCTION getDob;

DROP FUNCTION tbl_update;

由於我們已經刪除了這兩個函式。如果您再次驗證函式列表,您將得到一個空集:

SHOW FUNCTION STATUS WHERE db = 'test';
Empty set (0.00 sec)
廣告