建立好儲存過程後,使用者可以通過 show atatus 語句來檢視儲存過程的狀態,也可以通過 show create 語句來檢視儲存過程的定義。本節主要講解檢視儲存過程的狀態和定義的方法。
檢視儲存過程的狀態
mysql 中可以通過 show status 語句檢視儲存過程的狀態,其基本語法形式如下:
show procedure status like 儲存過程名;
like 儲存過程名用來匹配儲存過程的名稱,like 不能省略。
例項 1
建立資料表 studentinfo,sql 語句如下:
create table `studentinfo` (
`id` int(11) not null,
`name` varchar(20) default null,
`score` decimal(4,2) default null,
`subject` varchar(20) default null,
`teacher` varchar(20) default null,
primary key (`id`)
向資料表 studentinfo 中插入資料,sql 語句和執行結果如下:
mysql> insert into studentinfo(id,name,score) values(1,"zhangsan",80),(2,"lisi","70");
query ok, 2 rows affected (0.01 sec)
records: 2 duplicates: 0 warnings: 0
建立儲存過程 showstuscore,sql 語句和執行結果如下:
mysql> delimiter //
mysql> create procedure showstuscore()
-> begin
-> select id,name,score from studentinfo;
-> end //
query ok, 0 rows affected (0.07 sec)
下面查詢名為 showstuscore 的儲存過程的狀態,sql 語句和執行結果如下:
mysql> show procedure status like 'showstuscore' \g
*************************** 1. row ***************************
db: test
name: showstuscore
type: procedure
definer: root@localhost
modified: 2020-02-20 13:34:50
created: 2020-02-20 13:34:50
security_type: definer
comment:
character_set_client: gbk
collation_connection: gbk_chinese_ci
database collation: latin1_swedish_ci
1 row in set (0.01 sec)
mysql> show procedure status like 'show%' \g
*************************** 1. row ***************************
db: test
name: showstuscore
type: procedure
definer: root@localhost
modified: 2020-02-21 09:34:50
created: 2020-02-21 09:34:50
security_type: definer
comment:
character_set_client: gbk
collation_connection: gbk_chinese_ci
database collation: latin1_swedish_ci
1 row in set (0.00 sec)
查詢結果顯示了儲存過程的建立時間、修改時間和字符集等資訊。
檢視儲存過程的定義
mysql 中可以通過 show create 語句檢視儲存過程的狀態,語法格式如下:
show create procedure 儲存過程名;
例項 2
下面使用 show create 查詢名為 showstuscore 的儲存過程的狀態,sql 語句和執行結果如下:
mysql> show create procedure showstuscore \g
*************************** 1. row ***************************
procedure: showstuscore
sql_mode: strict_trans_tables,no_auto_create_user,no_engine_substitution
create procedure: create definer=`root`@`localhost` procedure `showstuscore`()
begin
select id,name,score from studentinfo;
endcharacter_set_client: gbk
collation_connection: gbk_chinese_ci
database collation: latin1_swedish_ci
1 row in set (0.01 sec)
查詢結果顯示了儲存過程的定義和字符集資訊等。
show status 語句只能檢視儲存過程是操作的哪乙個資料庫、儲存過程的名稱、型別、誰定義的、建立和修改時間、字元編碼等資訊。但是,這個語句不能查詢儲存過程的集體定義,如果需要檢視詳細定義,需要使用 show create 語句。
拓展閱讀
儲存過程的資訊都儲存在 information_schema 資料庫下的 routines 表中,可以通過查詢該錶的記錄來查詢儲存過程的資訊,sql 語句如下:
select * from information_schema.routines where routine_name=儲存過程名;
在 information_schema 資料庫下的 routines 表中,儲存著所有儲存過程的定義。所以,使用 select 語句查詢 routines 表中的儲存過程和函式的定義時,一定要使用 routine_name 字段指定儲存過程的名稱,否則,將查詢出所有的儲存過程的定義。
Mysq 儲存過程
drop procedure if exists xl 建立儲存過程 delimiter 轉譯字元 使用 代替 create procedure xl begin select from fd car report end delimiter 轉譯字元 使用 代替 call xl 呼叫儲存過程 de...
sql Sever的儲存過程轉換為mysql的
總體來說,sql sever 和mysql 的儲存過程的思路都是一樣的,但是在語法和結構上還是有很大的區別的。1.在 mysql 中寫儲存過程所有的 dbo都要去掉。2.每乙個sql語句後面都需要加上 否則報錯 4.再說引數,在 mssql 中我們一般會這麼定義引數 create procedure...
儲存過程系列之儲存過程sql查詢儲存過程的使用
1.查詢某個表被哪些儲存過程 以下簡稱 sp 使用到 select distinct object name id from syscomments where id in select object id from sys.objects where type p and text like ta...