首頁 資料庫 mysql教程 mysql-存储过程

mysql-存储过程

Jun 07, 2016 pm 04:27 PM
了解 儲存 過程

mysql---存储过程 了解存储过程之前,先了解一下mysql的控制结构。 类C语言(if……else、while循环等)SQL也有自己的控制结构。 if……else控制结构: 例如: (1) span style=font-family:FangSong_GB2312;if 判断表达式 then 执行语句;end if;与c语言进

mysql---存储过程

了解存储过程之前,先了解一下mysql的控制结构。

类似C语言(if……else、while循环等)SQL也有自己的控制结构。


if……else控制结构:

例如:

(1)

<span style="font-family:FangSong_GB2312;">if 判断表达式 
   then 执行语句;
end if;

与c语言进行比较
if(判断表达式)
   执行语句;</span>
登入後複製

(2)

<span style="font-family:FangSong_GB2312;">if 判断表达式1 
   then 执行语句1;
else
   then  执行语句2;
end if;

与c语言进行比较
if(判断表达式1)
   执行语句1;
else 
   执行语句2;</span>
登入後複製

(3)

<span style="font-family:FangSong_GB2312;">if 判断表达式1 
   then 执行语句1;
elseif 判断表达式2 
   then  执行语句2;
……
elseif 判断表达式N 
   then 执行语句N;
else
   执行语句N+1;
end if;

与c语言进行比较
if(判断表达式1)
   执行语句1;
else if(判断表达式2)
   执行语句2;
……
else if(判断表达式N)
   执行语句N;
else
   执行语句N+1;</span>
登入後複製

需要注意所有的执行语句和end if都要以‘;’结束,而且判断表达式之后接then,还有一点与C语言不同的是elseif之间没有空格。

mysql中还有一些与if相关的函数

if(判断表达式,值1,值2) 如果表达式为“true”返回“值1”,表达式为“false”返回“值2”。类似于C语言中的三目运算符。

ifnull(表达式1,表达式2)如果表达式1不为空,则返回表达式1。如果表达式1为空,则返回表达式2

nullif(表达式1,表达式2)如果表达式1=表达式2,返回null ,否则返回表达式1。


case when控制结构:

有两种形式

(1)

<span style="font-family:FangSong_GB2312;">case 待判断值 
when 值1 then 输出1
when 值2 then 输出2
……
when 值N then 输出N
else 默认输出 end;  #如果输出时语句的话,最后的结尾要改成end case。输出的是值则是end

同C语言的switch相比较
switch(待判断值){
case 值1:输出1
          break;
case 值2:输出2
          break;
……
case 值N:输出N
          break;
default:默认输出
}</span>
登入後複製

(2)

<span style="font-family:FangSong_GB2312;">case
when 判断表达式1 then 输出1
when 判断表达式2 then 输出2
……
when 判断表达式N then 输出N
else 默认输出 end case; #如果输出时语句的话,最后的结尾要是end case。输出的是值则是end。</span>
登入後複製

while循环结构:

<span style="font-family:FangSong_GB2312;">while 判断表达式 do
循环体
end while;

C语言中的while循环
while(判断表达式){
循环体;
}</span>
登入後複製

loop循环结构:无条件循环

<span style="font-family:FangSong_GB2312;">标签:loop
循环体;
end loop;
可以通过"leave 标签"来跳出loop循环。</span>
登入後複製

repeat循环结构:

<span style="font-family:FangSong_GB2312;">repeat
循环体; 
until 判断表达式 end repeat;</span>
登入後複製


现在开始介绍存储过程,其实存储过程跟函数很像

查看当前存储过程的状态:show procedure status;

创建存储过程:

<span style="font-family:FangSong_GB2312;">create procedure 名称(参数列表)
begin
语句集
end;</span>
登入後複製

参数列表总是存在的,如果没有参数则应该是空参数列表(),参数必须指定数据类型而且每个参数默认都是一个in参数。要指定为其他参数,可以在参数前面加上out或inout关键字。默认的in类似于按值传递,在存储过程中对参数进行修改,调用者是看不到的。out参数只是用来从存储过程传回数据的,无论给参数传入什么值,这个参数的初始值始终是null。对于inout参数,调用者不仅可以设置参数的初始值,而且在过程中修改参数,调用者是看得到的类似与按地址传递

删除存储过程:drop procedure 名称;

查看存储过程:show create procedure 名称\G 类似于show create table 表名  \G的作用是横向显示

调用存储过程:call 名称(参数);

声明变量:

(1)declare变量名 变量类型 默认值;    声明变量必须在开头定义,如果没有默认值,初始值为null。作用范围是在begin……end内

(2)set @变量名=初始值;定义的变量是用户变量,在存储过程之外的sql也是可以调用的

变量赋值:set 变量名=变量值  切忌直接给变量赋值(变量名= 变量值)

还有一种给一个或多个变量赋值的方法:利用“select 指定列 into 指定变量”,所以select的结果必须是单行。

 

示例:

所有示例,都实现将分界符设置为'$'

delimiter $

1、测试if-else控制结构



2、测试case……when

第一种情况:

输出是值,结尾用end。一般用于select


输出是语句,结尾用end case。一般用于存储过程


第二种情况:

输出是语句,结尾用end case。一般用于存储过程


输出是值,结尾用end。一般用于select


3、测试while循环



4、测试loop



5、测试repeat



6、带参数的存储过程

默认为in的参数:按值传递

初始值为0的变量tmp作为参数传入存储过程后,虽然在存储过程内对其进行修改,但调用者再次查看tmp时,值仍然为0,没有变化


out参数:


由第一个select可以看出,out参数不允许将实参的值传入存储过程。通过第二个和第三个select可以看出,存储过程内部修改变量后可以返回给调用者。

与按地址传递还有所不同,out只允许返回值,不允许传入值。


inout参数:按地址传递,形参值改变会改变实参的值


第一个select结果为0,说明实参的值传进存储过程。第二个和第三个select结果表明,inout可以在存储过程内部修改形参的值,从而影响实参,类似于按地址传递

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1664
14
CakePHP 教程
1423
52
Laravel 教程
1321
25
PHP教程
1269
29
C# 教程
1249
24
Vue3+TS+Vite開發技巧:如何進行資料加密與存儲 Vue3+TS+Vite開發技巧:如何進行資料加密與存儲 Sep 10, 2023 pm 04:51 PM

Vue3+TS+Vite開發技巧:如何進行資料加密和儲存隨著網路技術的快速發展,資料的安全性和隱私保護變得越來越重要。在Vue3+TS+Vite開發環境下,如何進行資料加密和存儲,是每個開發人員都需要面對的問題。本文將介紹一些常用的資料加密和儲存的技巧,幫助開發人員提升應用程式的安全性和使用者體驗。一、資料加密前端資料加密前端加密是保護資料安全性的重要一環。常用

華為明年將推創新 MED 儲存產品:機架容量超過 10 PB,功耗低於 2 kW 華為明年將推創新 MED 儲存產品:機架容量超過 10 PB,功耗低於 2 kW Mar 07, 2024 pm 10:43 PM

本站3月7日訊息,華為資料儲存產品線總裁週躍峰博士日前出席MWC2024大會,專門展示了為溫資料(WarmData)和冷資料(ColdData)設計的新一代OceanStorArctic磁電儲存解決方案。華為資料儲存產品線總裁週躍峰發布系列創新解決方案圖來源:華為本站附上華為官方新聞稿內容如下:該方案的成本比磁帶低20%,功耗比硬碟低90%。根據國外科技媒體blocksandfiles報道,華為發言人也透露了關於該磁電儲存解決方案的資訊:華為的磁電磁碟(MED)是對磁性儲存媒體的重大創新。第一代ME

如何在 Windows 11 上清理快取:詳細的圖片教學 如何在 Windows 11 上清理快取:詳細的圖片教學 Apr 24, 2023 pm 09:37 PM

什麼是緩存?快取(發音為ka·shay)是一種專門的高速硬體或軟體元件,用於儲存經常要求的資料和指令,這些資料和指令又可用於更快地載入網站、應用程式、服務和系統的其他部分。快取使最常存取的資料隨時可用。快取檔案與快取記憶體不同。快取文件是指經常需要的文件,如PNG、圖標、徽標、著色器等,多個程式可能需要這些文件。這些檔案儲存在您的實體磁碟機空間中,通常是隱藏的。另一方面,高速緩存記憶體是一種比主記憶體和/或RAM更快的記憶體類型。它極大地減少了資料存取時間,因為與RAM相比,它更靠近CPU並且速度

了解 ECache 快取技術 了解 ECache 快取技術 Jun 20, 2023 am 08:10 AM

ECache是​​一種Java快取框架,提供了一種簡單且強大的方法來減少電腦應用的回應時間。它透過將資料儲存在記憶體中,使應用程式能夠更快地回應客戶端請求,並提高系統吞吐量。在本文中,我們將介紹ECache快取技術的一些基礎知識,包括它的優點、安裝和使用方式等。一、ECache的優點提高系統效能:ECache將快取資料儲存在記憶體中,這意味著應用程式

了解 TRedis 快取技術 了解 TRedis 快取技術 Jun 19, 2023 pm 08:01 PM

TRedis快取技術是一種高效能的記憶體快取技術,能夠提高網站或應用程式的效能和回應速度。在本文中,我們將介紹TRedis快取技術的基本概念,以及如何在應用程式中使用它。什麼是TRedis快取技術? TRedis是一種記憶體快取技術,它可以將經常使用的資料儲存在記憶體中,從而提高存取這些資料的速度。這種技術的主要思想是透過使用記憶體快取來減少對資料庫或磁碟

了解 Redisson 快取技術 了解 Redisson 快取技術 Jun 21, 2023 am 09:54 AM

Redisson是一種基於Redis的Java應用程式快取解決方案。它提供了許多有用功能,使得在Java應用程式中使用Redis作為快取變得更加方便和高效。 Redisson提供的快取功能包括:1.分散式映射(Map):Redisson提供了一些用於建立分散式映射的API。這些映射可以包含鍵值對、哈希表項或對象,它們可以支援在多個節點之間共

Ubuntu上的Git安裝流程 Ubuntu上的Git安裝流程 Mar 20, 2024 pm 04:51 PM

Git是一個快速、可靠、適應性強的分散式版本控制系統。它旨在支援分散式的非線性工作流程,使其成為各種規模的軟體開發團隊的理想選擇。每個Git工作目錄都是一個獨立的儲存庫,具有所有更改的完整歷史記錄,並且能夠追蹤版本,即使沒有網路存取或中央伺服器。 GitHub是託管在雲端的Git儲存庫,它提供了分散式修訂控制的所有功能。 GitHub是Git的儲存庫,託管在雲端。與作為CLI工具的Git不同,GitHub有一個基於Web的圖形使用者介面。它用於版本控制,這涉及與其他開發人員協作,並追蹤隨時間推移對腳本和

一目了然:JSP檔案開啟的方法速覽 一目了然:JSP檔案開啟的方法速覽 Jan 31, 2024 pm 09:28 PM

JSP檔案開啟方式JSP(JavaServerPages)是一種動態網頁技術,它允許程式設計師在HTML頁面中嵌入Java程式碼。 JSP檔案是一個文字文件,其中包含HTML程式碼、XML標記和Java程式碼。當JSP檔案被要求時,它會被編譯成JavaServlet,然後由Web伺服器執行。開啟JSP檔案的方法有幾種方法可以開啟JSP檔案。最簡單的方法是使用文字編輯器,

See all articles