当前位置: 首页 > news >正文

MySQL——事务与存储过程(三)存储过程的使用(2) 查看存储过程

        MySQL存储了存储过程的状态信息,用户可以使用 SHOW STATUS 语句或 SHOW CREATE 语句来查看,也可以直接从系统的 information_schema 数据库中查询。接下来将针对这三种方法进行详细的讲解。

1.SHOW STATUS 语句查看存储过程的状态

        SHOW STATUS语句可以查看存储过程的状态,其基本语法结构如下:

SHOW [PROCEDURE|FUNCTION] STATUS [LIKE 'pattern']

        这个语句是一个 MySQL 的扩展。它返回子程序的特征,如数据库、名字、类型、创建者及创建、修改日期,如果没有指定样式,根据使用的语句,所有存储程序或存储函数的信息都被列出。上述语法格式中,PROCEDURE 和 FUNCTION 分别表示查看存储过的和函数,LIKE语句表示匹配的名称。
        例如, SHOW STATUS 语句的示例代码如下:

SHOW PROCEDURE STATUS LIKE'C%'\G

        代码执行如下:

mysql> SHOW PROCEDURE STATUS LIKE'C%'\G
*************************** 1. row ***************************Db: chapter06Name: CountProc1Type: PROCEDUREDefiner: 0Modified: 2024-07-27 08:50:35Created: 2024-07-27 08:50:35Security_type: DEFINERComment:
character_set_client: utf8mb4
collation_connection: utf8mb4_0900_ai_ciDatabase Collation: utf8mb4_0900_ai_ci
1 row in set (0.00 sec)

        上述代码中“SHOW PROCEDURE STATUS LIKE'C%'\G”语句获取数据库中所有名称以C开头的存储过程的信息。通过上面的语句可以看到,这个存储过程所在的数据库为 chapter06,存储过程的名称为 CountProc1 等相关信息。

2.SHOW CREATE 语句查看存储过程的状态

        除了 SHOW STATUS语句外,MySQL 还可以使用 SHOW CREATE 语句查看存储过程的状态,基本语法格式如下:

SHOW CREATE{PROCEDURE|FUNCTION} sp_name

        这个语句也是一个 MySQL的扩展。类似于 SHOW CREATE TABLE,它返回一个可用来重新创建已命名子程序的确切字符串。
        例如,SHOW CREATE 语句的示例代码如下:

SHOW CREATE PROCEDURE chapter06.CountProc1\G

        代码执行如下:

mysql> SHOW CREATE PROCEDuRE chapter06.CountProc1\G
*************************** 1. row ***************************Procedure: CountProclsql_mode: STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTIONCreate Procedure: CREATE DEFINER="@" PROCEDURE 'CountProcl'(IN s_gender VARCHAR(50),OUT num INT)
BEGIN
SELECT COUNT(*) INTO num FROM student WHERE gender =s_gender;
END
character_set_client: utf8mb4
collation_connection: utf8mb4_0900_ai_ciDatabase Collation: utf8mb4_0900_ai_ci
1 row in set (0.00 sec)

3.从 information_schema.Routines 表中查看存储过程的信息

        在 MySQL 中存储过程和函数的信息存储在 information_schema 数据库下的 Routines 表中。可以通过查询该表的记录来查询存储过程的信息,查询语句如下:

SELECT * FROM information_schema.Routines
WHERE ROUTINE_NAME='CountProc1' AND ROUTINE_TYPE='PROCEDURE'\G

        SQL语句执行结果如下:

mysql> SELECT * FROM information_schema.Routines-> WHERE ROUTINE_NAME='CountProc1' AND ROUTINE_TYPE='PROCEDURE'\G
*************************** 1. row ***************************SPECIFIC_NAME: CountProc1ROUTINE_CATALOG: defROUTINE_SCHEMA: chapter06ROUTINE_NAME: CountProclROUTINE_TYPE: PROCEDUREDATA_TYPE:CHARACTER_MAXIMUM_LENGTH: NULLCHARACTER_OCTET_LENGTH: NULLNUMERIC_PRECISION: NULLNUMERIC_SCALE: NULLDATETIME_PRECISION: NULLCHARACTER_SET_NAME: NULLCOLLATION_NAME: NULLDTD_IDENTIFIER: NULLROUTINE_BODY: SQLROUTINE_DEFINTION:BEGIN
SELECT COUNT(*)INTO num FROM student WHERE gender =s_gender;
ENDEXTERNAL_NAME: NULLEXTERNAL_LANGUAGE: NULLPARAMETER_STYLE: SQLIS_DETERMINISTIC: NOSQL_DATA_ACCESS: CONTAINS SQLSQL_PATH: NULLSECURITY_TYPE: DEFINERCREATED:2024-07-27 08:50:35LAST_ALTERED:2024-07-27 08:50:35SQL MODE: STRICT_TRANS_TABLES,NO_AUTO_CREATE USER,NO_ENGINE SUBSTITUTIONROUTINE_COMMENT :DEFINER: @
character_set_client: utf8mb4
collation_connection: utf8mb4_0900_ai_ciDatabase Collation: utf8mb4_0900_ai_ci
1 row in set (0.00 sec)

        需要注意的是,在 information_schema 数据库下的 Routines 表中,存储所有存储过程的定义。使用 SELECT 语句查询 Routine 表中的存储过程的定义时,一定要使用ROUTINE_NAME 字段指定存储过程的名称,否则将查询出所有存储过程的定义。如果有存储过程和函数名称相同,则需要同时指定 ROUTINE_TYPE 字段表明査询的是哪种类型的存储程序。


http://www.mrgr.cn/news/18515.html

相关文章:

  • 华为OD机试真题 - 石头剪刀布游戏(Python/JS/C/C++ 2024 D卷 100分)
  • 面向对象八股文(长期跟新_整理收集_排版未优化_day03_20个)
  • Kafka:浅谈对Kafka的认识
  • 基于STM32的智能冷链监控系统:MQTT协议与GPS模块设计(代码示例)
  • Android Audio分区——音频分区相关API(四)
  • java基础知识-JVM知识详解
  • 下载xhsell连接Linux系统
  • 鸿蒙之华为登录页
  • 十七、网络编程
  • 0901作业+思维导图梳理
  • Windows记事本打开某些文件后假死如何处理
  • Halcon基于相关性的模板匹配
  • Linux如何关闭终端不中断任务
  • yolo-world开放词汇检测onnxruntime和tensorrt推理
  • DL/T645-2007_Part2(负荷记录数据标识编码表)
  • 传统CV算法——图像特征算法之角点检测算法
  • Nmap使用教程图文教程(超详细)零基础入门到精通,收藏这一篇就够了
  • GCViT实战:使用GCViT实现图像分类任务(一)
  • 深入理解Python OpenCV图像处理
  • 捷邻系统小程序的设计