最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

mysql存儲過程之創(chuàng)建(CREATE PROCEDURE)和調(diào)用(CALL)及變量創(chuàng)建(DECLARE)和賦值(SET)操作方法

 更新時間:2019年12月23日 11:29:56   作者:luyaran  
這篇文章主要介紹了mysql存儲過程之創(chuàng)建(CREATE PROCEDURE)和調(diào)用(CALL)及變量創(chuàng)建(DECLARE)和賦值(SET)操作方法,結(jié)合實例形式較為詳細的分析了mysql存儲過程創(chuàng)建、調(diào)用及變量創(chuàng)建、賦值具體原理、操作技巧與相關(guān)注意事項,需要的朋友可以參考下

本文實例講述了mysql存儲過程之創(chuàng)建(CREATE PROCEDURE)和調(diào)用(CALL)及變量創(chuàng)建(DECLARE)和賦值(SET)操作方法。分享給大家供大家參考,具體如下:

存儲過程創(chuàng)建(CREATE PROCEDURE)和調(diào)用(CALL)

這個咱就不說什么定義啦術(shù)語啦啥的,直接看著實例來慢慢熟悉它。完事呢,咱們來創(chuàng)建一個名為GetAllProducts()的簡單存儲過程哈,這個GetAllProducts()存儲過程呢,主要是用來從products表中選擇所有產(chǎn)品。咱們來啟動 mysql 客戶端工具并鍵入以下命令:

DELIMITER //
 CREATE PROCEDURE GetAllProducts()
  BEGIN
  SELECT * FROM products;
  END //
DELIMITER ;

咱們來詳細看下上面的sql哈:

  • 第一個命令是DELIMITER //,它與存儲過程語法無關(guān)。 DELIMITER語句將標準分隔符 - 分號(;)更改為://。 在這種情況下,分隔符從分號(;)更改為雙斜杠//。為什么我們必須更改分隔符? 因為我們想將存儲過程作為整體傳遞給服務器,而不是讓mysql工具一次解釋每個語句。 在END關(guān)鍵字之后,使用分隔符//來指示存儲過程的結(jié)束。 最后一個命令(DELIMITER;)將分隔符更改回分號(;)。
  • 使用CREATE PROCEDURE語句創(chuàng)建一個新的存儲過程。在CREATE PROCEDURE語句之后指定存儲過程的名稱。在這個示例中,存儲過程的名稱為:GetAllProducts,并把括號放在存儲過程的名字之后。
  • BEGIN和END之間的部分稱為存儲過程的主體。將聲明性SQL語句放在主體中以處理業(yè)務邏輯。 在這個存儲過程中,我們使用一個簡單的select查詢來查詢products表中的數(shù)據(jù)。

通過上面的sql,咱們就算是創(chuàng)建了一個存儲過程了,完事我們就來調(diào)用存儲過程,來看下調(diào)用語法:

CALL STORED_PROCEDURE_NAME();

再來看下調(diào)用GetAllProducts()存儲過程的具體sql:

CALL GetAllProducts();

運行上面的sql你就會看到你在存儲過程中的sql的運行結(jié)果了。

變量創(chuàng)建(DECLARE)和賦值(SET)

我們都知道,變量是一個命名數(shù)據(jù)對象,變量的值可以在存儲過程執(zhí)行期間更改。我們接下來就嘗試使用存儲過程中的變量來保存直接/間接結(jié)果。 這些變量是存儲過程的本地變量,但是我們得注意,變量必須先聲明后,才能使用它。而我們?nèi)绻诖鎯^程中聲明一個變量,可以使用DECLARE語句,來看下sql語法:

DECLARE variable_name datatype(size) DEFAULT default_value;

咱們來看下上面的sql具體是什么意思:

  • 首先,在DECLARE關(guān)鍵字后面要指定變量名。變量名必須遵循MySQL表列名稱的命名規(guī)則。
  • 其次,指定變量的數(shù)據(jù)類型及其大小。變量可以有任何mysql數(shù)據(jù)類型,如INT,VARCHAR,DATETIME等。
  • 最后,當聲明一個變量時,它的初始值為NULL。但是可以使用DEFAULT關(guān)鍵字為變量分配默認值。

咱們接下來就來聲明一個名為total_sale的變量,數(shù)據(jù)類型為INT,默認值為0。來看下sql:

DECLARE total_sale INT DEFAULT 0;

其中,mysql允許使用單個DECLARE語句聲明共享相同數(shù)據(jù)類型的兩個或多個變量,來看個sql:

DECLARE x, y INT DEFAULT 0;

在上面的sql中,我們聲明了兩個整數(shù)變量x和y,并將其默認值設置為0。完事呢,既然變量設置完了,接下來就該分配值了,我們?nèi)绻獮樽兞糠峙湟粋€值,可以使用SET語句,來看個實例:

DECLARE total_count INT DEFAULT 0;
SET total_count = 10;

在上面的sql語句中,我們分配total_count變量的值為10。完事除了SET語句之外,還可以使用SELECT INTO語句將查詢的結(jié)果分配給一個變量,來看實例:

DECLARE total_products INT DEFAULT 0
 
SELECT COUNT(*) INTO total_products
FROM products

在上面的sql中,我們應當有如下理解:

  • 首先,聲明一個名為total_products的變量,并將其值初始化為0。
  • 然后,使用SELECT INTO語句來分配值給total_products變量,從數(shù)據(jù)庫中的products表中選擇的產(chǎn)品數(shù)量。

我們知道一個變量有自己的范圍(作用域),它用來定義它的生命周期。 但是如果在存儲過程中聲明一個變量,那么當達到存儲過程的END語句時,它將超出范圍,因此在其它代碼塊中無法訪問。

我們可以這么理解,如果我們在BEGIN END塊內(nèi)聲明一個變量,那么如果達到END,它將超出范圍。 我們還可以在不同的作用域中聲明具有相同名稱的兩個或多個變量,因為變量僅在自己的作用域中有效。 但是,在不同范圍內(nèi)聲明具有相同名稱的變量不是很好的編程習慣。其中,以@符號開頭的變量是會話變量,直到會話結(jié)束前它可用和可訪問。

更多關(guān)于MySQL相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《MySQL存儲過程技巧大全》、《MySQL常用函數(shù)大匯總》、《MySQL日志操作技巧大全》、《MySQL事務操作技巧匯總》及《MySQL數(shù)據(jù)庫鎖相關(guān)技巧匯總

希望本文所述對大家MySQL數(shù)據(jù)庫計有所幫助。

相關(guān)文章

  • MySql命令實例匯總

    MySql命令實例匯總

    這篇文章主要介紹了MySql命令,結(jié)合實例分析了MySQL數(shù)據(jù)庫的創(chuàng)建、連接及增刪改查等各種常用操作的使用方法與相關(guān)注意事項,非常具有實用價值,需要的朋友可以參考下
    2015-11-11
  • 利用pt-heartbeat監(jiān)控MySQL的復制延遲詳解

    利用pt-heartbeat監(jiān)控MySQL的復制延遲詳解

    這篇文章主要給大家介紹了利用pt-heartbeat監(jiān)控MySQL的復制延遲的相關(guān)資料,文中詳細介紹了pt-heartbeat、監(jiān)控原理以及安裝過程等的相關(guān)內(nèi)容,對大家具有一定的參考學習價值,需要的朋友們下面來一起看看吧。
    2017-06-06
  • windows下如何安裝和啟動MySQL

    windows下如何安裝和啟動MySQL

    本篇文章主要給大家介紹windows下如何安裝和啟動MySQL,需要的朋友跟著小編一起來學習啦
    2015-08-08
  • mySQL中in查詢與exists查詢的區(qū)別小結(jié)

    mySQL中in查詢與exists查詢的區(qū)別小結(jié)

    最近被一個朋友問到mySQL中in查詢和exists的區(qū)別,當然只是草草的回答了下,今天偶然看到了一篇關(guān)于mysql中的exists查詢的文章,讀完感覺太”冷落”它了,這里總結(jié)一下,也跟自己常用的in查詢做一下對比。有需要的朋友們可以參考借鑒,下面來一起學習學習吧。
    2016-11-11
  • 從數(shù)據(jù)庫中取出最近三十天的數(shù)據(jù)并生成柱狀圖

    從數(shù)據(jù)庫中取出最近三十天的數(shù)據(jù)并生成柱狀圖

    從數(shù)據(jù)庫中取出最近三十天的數(shù)據(jù)并生成柱狀圖的代碼,需要的朋友可以參考下。
    2011-05-05
  • mysql如何能有效防止刪庫跑路

    mysql如何能有效防止刪庫跑路

    本文主要介紹了mysql如何能有效防止刪庫跑路,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • MySQL中常用的字段截取和字符串截取方法

    MySQL中常用的字段截取和字符串截取方法

    在 MySQL 數(shù)據(jù)庫中,有時我們需要截取字段或字符串的一部分進行查詢、展示或處理,本文將介紹 MySQL 中常用的字段截取和字符串截取方法,幫助你靈活處理數(shù)據(jù),需要的朋友可以參考下
    2024-01-01
  • MySQL?source導入很慢的解決方法

    MySQL?source導入很慢的解決方法

    在mysql導入數(shù)據(jù)量非常大的sql文件的時候,速度會非常慢,這篇文章主要給大家介紹了關(guān)于MySQL?source導入很慢的解決方法,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-03-03
  • 解決MySQL共享鎖引發(fā)的死鎖問題

    解決MySQL共享鎖引發(fā)的死鎖問題

    這篇文章主要給大家介紹了MySQL共享鎖引發(fā)的死鎖問題的原因和解決辦法,文中通過代碼示例和圖文介紹的非常詳細,對大家的學習或工作有一定的幫助,需要的朋友可以參考下
    2023-11-11
  • 分享Mysql命令大全

    分享Mysql命令大全

    本文給大家介紹mysql命令大全相關(guān)知識,涉及到mysql命令相關(guān)知識,對此感興趣的朋友一起學習吧
    2015-12-12

最新評論

肃南| 凤庆县| 辉南县| 天峨县| 满城县| 垫江县| 贡觉县| 富源县| 区。| 昭平县| 个旧市| 绥化市| 鄂伦春自治旗| 台北市| 沙河市| 巩义市| 天气| 榆中县| 镇远县| 长子县| 拉孜县| 会昌县| 萨嘎县| 玉田县| 崇礼县| 五河县| 阿克| 措美县| 常熟市| 蒲江县| 抚顺市| 平果县| 哈尔滨市| 闻喜县| 广灵县| 金川县| 闽清县| 华容县| 平湖市| 武平县| 罗平县|