八 資料庫mysql儲存過程

2021-08-18 05:21:34 字數 2457 閱讀 1422

8.1什麼是儲存過程

儲存過程:帶有邏輯的sql語句

之前的sql沒有條件判斷,沒有迴圈

儲存過程帶上流程控制語句(if  while)

8.2儲存過程特點

1)執行效率非常快,儲存過程是在資料庫的伺服器端執行的!!!

2)移植性很差!不同資料庫的儲存過程是不能移植

8.3儲存過程語法

建立儲存過程:           

delimiter $    -- 宣告儲存過程的結束符

create procedure pro_test()   -- 儲存過程名稱(引數列表)

begin    -- 開始

-- 可以寫多個sql語句      --sql語句+流程

select *from emp;

end $

call pro_test();  執行函式

引數:in:表示輸入引數,可以攜帶資料到儲存過程中。

out: 表示輸出引數,可以從儲存過程中返回結果

inout:表示輸入輸出,兩種功能都能夠實現

--   8.4帶有輸入的儲存過程

delimiter $

create procedure pro_findbyid(in eid int)

begin

select *from emp where id = eid;

end $

call pro_findbyid(1);

8.5帶有輸出的儲存過程

擴充套件:mysql的變數

全域性變數: mysql資料庫內建變數(cmd show variables)

檢視某個全域性變數:  

--character_set_client:mysql伺服器接受資料的編碼

--character_set_results:mysql伺服器輸出資料的編碼

會話變數:只存在於當前客戶端與資料庫伺服器端的一次連線當中,如果斷開連線,會話變數就會全部丟失!

定義會話變數:set @變數=值

檢視會話變數:select @變數

set @name = 'eric';

select @name;

區域性變數:

所有在儲存過程中使用的變數就叫區域性變數,只要儲存過程執行完畢,區域性變數就丟失了!

-- 刪除儲存過程

drop procedure pro_testout;

-- 帶有輸出的儲存過程

-- 擴充套件

delimiter $

create procedure pro_testout(out str varchar(20))

begin

set str = '這是乙個輸出引數';

end $

call pro_testout(@name);

select @name;

8.6帶有輸入輸出的儲存過程

delimiter $

create procedure pro_testinout(inout n int)

begin

select n;

set n = 500;

end $

set @n=10;

call pro_testinout(@n);

select @n;

8.7帶有判斷條件判斷的儲存過程

delimiter $

create procedure pro_testi(in num int, inout str varchar(20))

begin 

if num=1 then

set str = '星期一';

elseif num=2  then

set str = '星期二';

elseif num=3  then

set str = '星期三';

else 

set str = '輸入錯誤';

end if;

end $

call pro_testif(1,@str);

select @str;

8.8帶有while迴圈

delimiter $

create procedure pro_testwhile(in num int, out result int)

begin

-- 定義乙個區域性變數

declare i int default 1;

declare vsum int default 0;    

while iset vsum = vsum+i;   

set i = i+1;

end while;

set result = vsum;

end $

drop  procedure  pro_testwhile;

set @num;

call pro_testwhile(100, @result);

select @result;

mysql資料庫 儲存過程

類似於 函式 是一組為了完成特定功能的sql語句集,第一次編譯,以後可以直接呼叫不需要再次編譯。根據定義的不同需要傳入引數 1 增強sql語言的功能和靈活性 儲存過程可以用控制語句編寫,有很強的靈活性,可以完成複雜的判斷和較複雜的運算。2 標準元件式程式設計 儲存過程被建立後,可以在程式中被多次呼叫...

MySQL資料庫儲存過程詳解

mysql資料庫儲存過程詳解 一 儲存過程 1 概念 儲存過程 stored procedure 是一種在資料庫中儲存複雜程式,以便外部程式呼叫的一種資料庫物件。儲存過程是為了完成特定功能的sql語句集,經編譯建立並儲存在資料庫中,使用者可通過指定儲存過程的名字並給定引數 需要時 來呼叫執行。儲存過...

資料庫MySQL之儲存過程

儲存過程是一種在資料庫中儲存複雜程式,以便外部程式呼叫的一種資料庫物件。其在思想上與物件導向程式設計中函式的定義與呼叫一致,儲存過程只是sql語言維度上的封裝與運用。優點 1 簡化了儲存呼叫者的步驟,降低了儲存呼叫者的學習成本 2 隱藏了儲存過程的實際邏輯,易於商業內容的保密 3 降低了sql呼叫方...