用 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...