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呼叫方...