1. 程式人生 > >Mysql資料庫如何檢視某張表table被哪些儲存過程procedure使用過

Mysql資料庫如何檢視某張表table被哪些儲存過程procedure使用過

一、摘要

由於程式碼重構,修改了表結構,開發人員修改完java後臺程式碼並內測沒問題後提交業務部門測試時發現,新客戶取不到產品價格,原因是儲存過程呼叫的還是舊資料表。為此,需要先找出哪些儲存過程使用了這些表,然後修改。那麼問題來了,mysql資料庫如何檢視哪些儲存過程使用了這些資料表呢?

二、mysql資料庫儲存過程資訊檢視

1、show 命令

1) SHOW STATUS檢視儲存過程狀態

SHOW { PROCEDURE | FUNCTION } STATUS [ LIKE ‘pattern’ ]
SHOW PROCEDURE STATUS LIKE ‘proc_%’
檢視伺服器上以proc_開頭的所有儲存過程狀態資訊。

2) SHOW CREATE檢視儲存過程定義

SHOW CREATE { PROCEDURE | FUNCTION } sp_name
SHOW CREATE PROCEDURE xdd_tst.proc_get_client_funds_info;
檢視xdd_tst庫proc_get_client_funds_info的sql定義。

2、利用mysql庫的proc表

查詢使用了表sale_client_goods的所有儲存過程,sql如下:

select * from mysql.proc
where db = 'xdd_tst' and type = 'PROCEDURE'
and body like '%sale_client_goods%'

輸出結果:
在這裡插入圖片描述
得到儲存過程列表後,就逐個修改吧!

三、可能存在的問題

1、資料庫訪問許可權問題

2、blob型別欄位檢視問題

比如一開始使用mac電腦上的navicat檢視proc表的blob型別欄位就檢視不了,後來使用sqlyog客戶端工具就沒任何問題,但是不影響sql查詢。