1. 程式人生 > >MySQL——檢視儲存過程和函式

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的執行可能需要 考慮