从information_schema.Routines表中查看存储过程的信息
时间: 2024-02-19 21:57:29 浏览: 27
可以使用以下SQL语句从information_schema.Routines表中查看存储过程的信息:
```
SELECT routine_name, routine_definition, created, last_altered
FROM information_schema.routines
WHERE routine_type = 'PROCEDURE';
```
这个查询语句会返回所有存储过程的名称、定义、创建时间和最后修改时间。其中,`routine_type = 'PROCEDURE'` 条件用于过滤掉所有函数,只返回存储过程的信息。
相关问题
mysql中,delimiter格式问题,不带参数的存储过程和带输入参数的存储过程以及带输入、输出参数的存储过程的区别;查看存储过程和从information_schema.Routines表中查看存储过程的信息区别,注意的地方
在MySQL中,Delimiter用于指定SQL语句中的分隔符。在使用存储过程时,需要使用Delimiter来指定存储过程内部语句的分隔符,以免与存储过程定义中的分隔符冲突。
不带参数的存储过程:
不带参数的存储过程不需要输入参数,只需执行存储过程即可。例如:
```
DELIMITER //
CREATE PROCEDURE my_procedure()
BEGIN
SELECT * FROM my_table;
END//
DELIMITER ;
```
带输入参数的存储过程:
带输入参数的存储过程需要在创建存储过程时定义输入参数,并在存储过程中使用输入参数进行操作。例如:
```
DELIMITER //
CREATE PROCEDURE my_procedure(IN param1 INT, IN param2 VARCHAR(50))
BEGIN
SELECT * FROM my_table WHERE column1 = param1 AND column2 = param2;
END//
DELIMITER ;
```
带输入、输出参数的存储过程:
带输入、输出参数的存储过程需要在创建存储过程时定义输入参数和输出参数,并在存储过程中使用输入参数进行操作,并将结果赋值给输出参数。例如:
```
DELIMITER //
CREATE PROCEDURE my_procedure(IN param1 INT, OUT param2 VARCHAR(50))
BEGIN
SELECT column2 INTO param2 FROM my_table WHERE column1 = param1;
END//
DELIMITER ;
```
查看存储过程:
可以使用SHOW PROCEDURE STATUS命令来查看存储过程的信息。例如:
```
SHOW PROCEDURE STATUS WHERE Db = 'my_database';
```
也可以使用SHOW CREATE PROCEDURE命令来查看存储过程的定义。例如:
```
SHOW CREATE PROCEDURE my_procedure;
```
从information_schema.Routines表中查看存储过程的信息:
可以使用information_schema.Routines表来查看存储过程的信息。例如:
```
SELECT * FROM information_schema.Routines WHERE Routine_type = 'PROCEDURE' AND Routine_schema = 'my_database';
```
需要注意的是,information_schema.Routines表中的参数信息是以JSON格式存储的。因此,在查询参数信息时需要对参数信息进行解析。例如:
```
SELECT
ROUTINE_NAME,
JSON_UNQUOTE(JSON_EXTRACT(PARAMETER_LIST, '$[0].name')) AS param1_name,
JSON_EXTRACT(PARAMETER_LIST, '$[0].type') AS param1_type,
JSON_EXTRACT(PARAMETER_LIST, '$[0].mode') AS param1_mode
FROM information_schema.Routines WHERE ROUTINE_TYPE = 'PROCEDURE' AND ROUTINE_SCHEMA = 'my_database';
```
information_schema.routines 详解
`information_schema.routines` 是 MySQL 系统数据库 `information_schema` 中的一个表,用于存储数据库中所有存储过程和函数的信息。该表包含以下列:
- `SPECIFIC_NAME`:存储过程或函数的唯一名称。
- `ROUTINE_CATALOG`:存储过程或函数所属的数据库名称。
- `ROUTINE_SCHEMA`:存储过程或函数所属的数据库名称。
- `ROUTINE_NAME`:存储过程或函数的名称。
- `ROUTINE_TYPE`:存储过程或函数的类型,取值为 "PROCEDURE" 或 "FUNCTION"。
- `DTD_IDENTIFIER`:存储过程或函数的返回类型,以及参数的类型和数量的描述。
- `ROUTINE_BODY`:存储过程或函数的实现体,取值为 "SQL" 或 "NATIVE"。
- `ROUTINE_DEFINITION`:存储过程或函数的定义体,即存储过程或函数的 SQL 语句。
- `EXTERNAL_NAME`:当存储过程或函数是外部函数时,存储外部函数的名称。
- `EXTERNAL_LANGUAGE`:当存储过程或函数是外部函数时,存储外部函数的编程语言。
使用 `information_schema.routines` 可以方便地查询数据库中所有存储过程和函数的信息,例如可以通过以下语句查询数据库中所有存储过程和函数的名称和类型:
```sql
SELECT ROUTINE_NAME, ROUTINE_TYPE FROM information_schema.routines;
```
该表还可以用于查询指定存储过程或函数的详细信息,例如可以通过以下语句查询指定存储过程的定义体:
```sql
SELECT ROUTINE_DEFINITION FROM information_schema.routines WHERE ROUTINE_NAME = 'my_proc';
```
需要注意的是,只有当用户对存储过程或函数有访问权限时,才能查询到该存储过程或函数的信息。
相关推荐
![text/plain](https://img-home.csdnimg.cn/images/20210720083646.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)