MySQL——檢視儲存過程和函式
1. 檢視儲存過程和函式的狀態
用 SHOW STATUS 語句可以檢視儲存過程和函式的狀態,其基本的語法結構如下:
SHOW { PROCEDURE | FUNCTION } 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: [email protected] 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)
2. 檢視儲存過程和函式的定義
除了SHOW STATUS 之外,還可以使用 SHOW CREATE 語句檢視儲存過程和函式的狀態。
SHOW CREATE { PROCEDURE | FUNCTION } 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 );
END
character_set_client: utf8
collation_connection: utf8_general_ci
Database Collation: utf8_general_ci
1 row in set (0.03 sec)
3. 檢視儲存過程和函式的資訊
在 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: [email protected]
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資料庫應用案例課堂》2016年1月第1版
相關推薦
MySQL——檢視儲存過程和函式
1. 檢視儲存過程和函式的狀態 用 SHOW STATUS 語句可以檢視儲存過程和函式的狀態,其基本的語法結構如下: SHOW { PROCEDURE | FUNCTION } STATUS [ LIKE 'pat
(十二)MySQL基礎——儲存過程和函式
儲存過程和函式:類似於java中的方法 好處:1、提高程式碼的重用性;2、簡化操作 儲存過程: 1、含義:一組預先編譯好的sql語句的集合,可以理解成批處理語句 2、優點:(1)提高程式碼的重用性(2)簡化操作(3)減少了編譯次數並且減少了和資料庫伺服器的連線次
MySQL的儲存過程和函式入門 第一篇
最近開發中用到儲存過程和函式,就順便學習一下了。 1.什麼是儲存過程和函式? 儲存過程和函式是事先經過編譯並存儲在資料庫的一段SQL語句集合,呼叫儲存過程和函式可以減少資料庫和應用伺服器之間的傳輸,對於提高資料處理的效率是有好處的。 2.儲存過程和函式的區別 函式
MySQL——呼叫儲存過程和函式
1. 呼叫儲存過程 儲存過程是通過 CALL 語向進行呼叫的,語法如下: CALL sp_name ( [ parameter [ , ... ] ] ) CALL 語句呼叫一個先前用 CREATE PROCEDURE 建立的儲
MySQL儲存過程和函式的區別與優缺點
為什麼要使用儲存過程和函式 資料庫物件儲存過程和函式,是用來實現一組關於表操作的SQL語句程式碼當做一個整體來執行。一個完整的操作會包含多條SQL語句,在執行過程中需要根據前面的SQL語句來執行結果有選擇的執行後面的SQL語句。 儲存過程和函式可以簡單的理解為一條或多條SQL語句的集合
6.儲存過程和函式-mysql
儲存過程和函式是在資料庫中定義一些SQL語句的集合。然後需要哪些功能的時候,直接掉用儲存過程和函式來執行已經定義好了的SQL語句,引入儲存過程和函式可以減少開發人員編寫重複的SQL。 儲存過程和函式是在MYSQL的伺服器中儲存執行的,這個SQL語句是已經編譯過了的,可以減少了客戶端服務端資料傳
MySQL優化---儲存過程和儲存函式-1-轉自部落格園
轉自網際網路.mysql優化 當一個大型系統在建立時,會發現,很多的SQL操作是有重疊的,個別計算是相同的,比如:業務系統中,計算一張工單的計算方式。當遇到這些情況時,我們運用儲存過程就是一個非常棒的優化啦。那麼,什麼是儲存 過程和儲存函式呢? 一、MYSQL儲存過程簡介(技術
mysql儲存過程和函式(一)
儲存過程和函式是事先經過編譯並存儲在資料庫的一段sql語句集合,呼叫儲存過程和函式可以簡化應用程式開發人員的很多工作,減少資料在資料庫和應用伺服器之間的傳輸,對提高資料執行效率是有好處的。 儲存過程和函式的區別在於函式必須有返回值,而儲存過程卻沒有,儲存過程的引數可以使用IN,OUT,INOUT型別
MySQL基礎值 儲存過程和函式
一、建立儲存過程和函式 什麼是建立儲存過程和函式? 就是將經常使用的一組SQL語句組合在一起,並將這些SQL語句當做一個整體儲存在MYSQL伺服器中。 建立儲存過程的語句是:CREATE PROCEDURE 建立儲存函式的語句是:CREATE FU
mysql 儲存過程和函式中游標的使用
在儲存過程和函式中,可以使用游標對結果集進行迴圈的處理。 游標的使用包括游標的生命、OPEN、fetch、和close,其語法如下: 1、宣告游標: declare 游標名 cursor for select_statement(查詢語句) 2、open游標: &nb
MySQL基礎系列之 儲存過程和函式
摘要:儲存過程和函式是事先經過編譯並存儲在資料庫中的一段SQL語句的集合 儲存過程無返回值,函式有返回值 儲存過程的引數可以使用IN、OUT、INOUT,函式只能使用IN 建立儲存過程 CREATE PROCEDURE 建立函式使用 CREATE FUNCTION 使用CALL語句來呼叫
MySQL中的儲存過程和函式使用詳解
一.對待儲存過程和函式的態度 在實際專案中應該儘量少用儲存過程和函式,理由如下: 1.移植性差,在MySQL中的儲存過程移植到sqlsever上就不一定可以用了。 2.除錯麻煩,在db中報一個錯誤和在應用層報一個錯誤不是一個概念,那將是毀滅性打擊,直接一個error:1045什麼的更本毫無頭緒。 3.擴充套件
<MySQL>入門六 儲存過程和函式
-- 儲存過程和函式 /* 儲存過程和函式:類似java中的方法 好處: 1.提高程式碼的重用性 2.簡化操作 */ /* 儲存過程 含義:一組預先編譯好的SQL語句的集合。理解成批處理語句 1.提高程式碼的重用性 2.簡化操作
MySQL 儲存過程和函式
概述 一提到儲存過程可能就會引出另一個話題就是儲存過程的優缺點,這裡也不做討論。因為mysql中儲存過程和函式的語法非常接近所以就放在一起,主要區別就是函式必須有返回值(return),並且函式的引數只有IN型別而儲存過程有IN、OUT、INOUT這三種類型。 1.建立儲存過程和函式語法
修改MySql的儲存過程、函式、事件、觸發器、檢視的 DEFINER
#修改儲存過程、函式、事件、觸發器、檢視的 DEFINER select definer from mysql.proc; update mysql.proc set definer='[email protected]'; or update mysql.pro
mysql中不用儲存過程和函式查詢子節點的方法
sql實現:select id from ( select t1.id, if(find_in_set(parent_id, @pids) > 0, @pids := concat(@pids, ',', id),
MySQL——儲存過程和函式使用總結
什麼是儲存過程和函式 儲存過程和函式是事先經過編譯並存儲在資料庫中的一段SQL語句的集合,呼叫儲存過程和函式可以簡化應用開發人員的很多工作,減少資料在資料庫和應用伺服器之間的傳輸,對於提高資料處理的效率是有好處的。 儲存過程和函式的區別在於函式必須有返回值,而儲存過程沒有
檢視、儲存過程和函式以及觸發器
一、檢視1.檢視的定義檢視是一種虛擬存在的表,它本身在資料庫中並不存在,而是在我們出於某種目的想要去使用檢視的時候,使用我們資料庫中已經存在的表的行和列資料來自定義的一種動態生成的,便於檢索的安全的資料獨立的一種虛擬表。2.優點①簡單。檢視是一種已經經過過濾篩選之後的符合條件
MySQL儲存過程和自定義函式、Navicat for mysql、建立儲存過程和函式、呼叫儲存過程和函式的區別
與你相遇 好幸運 可我已失去為你淚流滿面的權利 但願在我看不到的天際 你張開了雙翼 1 MySQL儲存過程和函式 過程和函式,它們被編譯後儲存在資料庫中,稱為永續性儲存模組(Persistent Stored Module,PSM),可以反覆呼叫,執行速度快。 1.1 儲存過程 儲存過程是由
MYSQL的儲存過程和遊標的使用
1、儲存過程 儲存過程是什麼,簡單來講,就像Java中的 方法(函式),不過它是SQL世界中的方法。 大部分時候,我們所使用都是單條SQL,用來針對一個或多表連線。但是也有情況,是據判斷先對錶A執行操作,變動後再結合表B進行操作。即SQL的執行可能需要 考慮