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)

