MySQL 檢視儲存過程和函式

2021-08-20 04:40:26 字數 3712 閱讀 5738

用  show   status  語句可以檢視儲存過程和函式的狀態,其基本的語法結構如下:

show      status   [  like  'pattern'  ]

show status 語句是  mysql 的乙個擴充套件。它返回子程式的特徵,如資料庫、名字、型別、建立者及建立和修改日期。如果沒有指定樣式,根據使用的語句,所有的儲存程式或儲存函式的資訊都會被列出。procedure  和  function  分別表示檢視儲存過程和函式;like  語句表示匹配儲存過程或函式的名稱。

【例】:

mysql> show procedure status like 'c%'\g;

*************************** 1. row ***************************

db: test

name: countproc

type: procedure

definer: root@localhost

modified: 2016-02-27 11:06:11

created: 2016-02-27 11:06:11

security_type: definer

comment:

character_set_client: utf8

collation_connection: utf8_general_ci

database collation: latin1_swedish_ci

1 row in set (0.01 sec)

除了show status  之外,還可以使用   show create  語句檢視儲存過程和函式的狀態。

show   create     sp_name

show create  語句是  mysql  的乙個擴充套件,類似於  show create table,  它返回乙個可用來重新建立已命名子程式的確切字串。procedure  和  function  分別表示檢視儲存過程和函式;  like  語句表示匹配儲存過程或函式的名稱。

【例】show create  語句示例。**如下:

mysql> show  create  function test_db.countproc2  \g

*************************** 1. row ***************************

function: countproc2

sql_mode: strict_trans_tables,no_auto_create_user,no_engine_substitution

create function: create definer=`root`@`localhost` function `countproc2`( sid int ) returns int(11)

begin

return ( select count(*) from fruits where s_id = sid );

endcharacter_set_client: utf8

collation_connection: utf8_general_ci

database collation: utf8_general_ci

1 row in set (0.03 sec)

在  mysql 中,儲存過程和函式的資訊儲存在  information_schema  資料庫下的  routines  表中,可以通過查詢該錶的記錄來查詢儲存過程和函式的資訊,其基本的語法形式如下:

select   *   from   information_schema.routines

where   routine_name  =  '   sp_name  ' ;

其中,routine_name  欄位中儲存的是儲存過程和函式的名稱;   sp_name  引數表示儲存過程或函式的名稱。

【例】  從  routines  表中查詢名為  countproc2  的儲存函式的資訊。**如下:

mysql> select  *  from  information_schema.routines

-> where routine_name = 'countproc2' and routine_type = 'function' \g

*************************** 1. row ***************************

specific_name: countproc2

routine_catalog: def

routine_schema: test_db

routine_name: countproc2

routine_type: function

data_type: int

character_maximum_length: null

character_octet_length: null

numeric_precision: 10

numeric_scale: 0

datetime_precision: null

character_set_name: null

collation_name: null

dtd_identifier: int(11)

routine_body: sql

routine_definition: begin

return ( select count(*) from fruits where s_id = sid );

end external_name: null

external_language: null

parameter_style: sql

is_deterministic: no

sql_data_access: contains sql

sql_path: null

security_type: definer

created: 2018-05-22 19:54:57

last_altered: 2018-05-22 19:54:57

sql_mode: strict_trans_tables,no_auto_create_user,no_engine_substitution

routine_comment:

definer: root@localhost

character_set_client: utf8

collation_connection: utf8_general_ci

database_collation: utf8_general_ci

1 row in set (0.00 sec)

information_schema  資料庫中的  routines  表中,儲存了所有儲存過程和函式的定義。使用 select 語句查詢  routines 表中的儲存過程和函式的定義時,一定要使用 routne_name  字段指定儲存過程或函式的名稱。否則,將查詢出所有的儲存過程或函式的定義。如果儲存過程和儲存函式名稱相同,則需要要同時指定  routine_type  字段表明查詢的是哪種型別的儲存程式。

【注】參考於清華大學出版社《mysql資料庫應用案例課堂》2023年1月第1版

MySQL檢視儲存過程和函式

mysql儲存了儲存過程和函式的狀態資訊,使用者可以使用show status語句或show create語句來檢視,也可以直接從系統的information schema資料庫中查詢。1.使用show status語句檢視儲存過程和函式的狀態 例1 show status語句示例,如下 mysql...

mysql檢視儲存過程函式

查詢資料庫中的儲存過程和函式 select name from mysql.proc where db xx and type procedure 儲存過程 select name from mysql.proc where db xx and type function 函式 show proce...

MYSQL檢視儲存過程函式

查詢資料庫中的儲存過程和函式 select name from mysql.proc where db xx and type procedure 儲存過程 select name from mysql.proc where db xx and type function 函式 show proce...