什麼是mysql儲存過程,什麼時候需要用到儲存過程?
簡單的說就是用sql語句的方式實現可程式設計的函式,然後儲存到資料庫的資料字典中,通常針對需要批量處理或者重複性比較高的業務封裝到儲存過程中,然後只需呼叫既可。
首先儲存過程開頭需要 delimiter 【自定義結束符】也可以說是:重置結束符
為什麼必須首先加上 delimiter //(嘗試去讀**才是學習程式設計的最好的方式)通常情況下我們是以分號結束,mysql就會執行該命令,但有時候,不希望mysql這麼做。在可能輸入較多的語句,且語句中包含分號。使用delimiter // 後當我們碰到自己自定義的結束符,mysql直譯器才執行這語句。
**例項
delimiter
// --重置結束符號
create
procedure select_test(
)--宣告儲存過程:
begin
--begin 開始
select
*from test;
--中間是放函式體
end//; -- end 結束
call select_test(
)--call+過程名 呼叫儲存過程
執行結果
建立了儲存過程並不會因為你關了資料庫而消失,它會儲存到資料庫的資料字典中,下次依然可以直接呼叫
--檢視所有儲存過程
show
procedure
status
;--檢視指定儲存過程
show
procedure
status
where name=
'select_test'
;--檢視指定儲存過程的源**
show
create
procedure select_test;
執行結果(檢視所有儲存過程)
執行結果(檢視指定儲存過程)
執行結果(檢視指定儲存過程的源**)
刪除儲存過程
--刪除儲存過程
drop
procedure select_test;
--刪除後檢視該儲存過程
show
procedure
status
where name =
'select_test'
;
執行結果(刪除後)
declare 【變數名】關鍵字宣告變數
delimiter
//create
procedure test(
)begin
--宣告乙個varchar型別的變數
declare result varchar(2
);--宣告兩個int型別的變數
declare x,y int(3
);--給變數定義值需要用set
set x =
666;
set y =
888;
--查詢變數用select
select x;
--根據條件查詢資料後用 into 賦值給result變數
select name into result from test where name=
"李四"
;--查詢result變數結果
select result;
end//
call test(
);
執行結果(有兩個,因為查詢了兩次)
分別有三個in、out、inout
in——傳入值
delimiter
//--in用來定義傳遞的形參,然後通過呼叫傳遞實參來執行函式
create
procedure test2(
in x varchar
(255))
begin
select
*from test where name = x;
end//
call test2(
'李四'
out——傳出值
delimiter
//create
procedure test2(
in x varchar(2
),out y int
)begin
select salary into y from test where name = x;
end//
--呼叫儲存過程中定義out變數用@,
--就可以使用定義後的變數
call test2(
'李四',@y
);--將儲存過程裡的值給了y後,定義變數後就可以使用該變數
select
@y
執行結果
inout——in和out的組合,可傳入又傳出
delimiter
//create
procedure test3(
inout x int
,in y int
)begin
set x = x + y;
end//
set@x=10
;call test3(@x,
10);select
@x;
執行結果
最後
除了儲存過程還有乙個是跟儲存過程很相似的自定義函式,但是它們是有區別的,下回就講講吧
mysql儲存過程 MySQL儲存過程
在本節中,您將逐步學習如何在mysql中編寫和開發儲存過程。首先,我們向您介紹儲存過程的概念,並討論何時使用它。然後,展示如何使用過程 的基本元素,如建立儲存過程的語句,if else,case,loop,儲存過程的引數。下面每個教程都包含了易於理解的示例和詳細的說明。如果您瀏覽並學習所有教程,您可...
mysql 儲存過程 mysql 儲存過程
建立 為建立儲存過程的結束標誌,使用delimiter 可更改標誌 格式create procedure begin sqlend create procedure myprocedure in param integer begin select from tb role where tb rol...
mysql 儲存過程 MySQL儲存過程
目錄 儲存過程 簡介是一組為了完成特定功能的sql語句集合 比傳統sql速度更快 執行效率更高 儲存過程的優點 執行一次後,會將生成的二進位制 駐留緩衝區,提高執行效率 sql語句加上控制語句的集合,靈活性高 在伺服器端儲存,客戶端呼叫時,降低網路負載 可多次重複被呼叫,可隨時修改,不影響客戶端呼叫...