儲存過程
是一組為了完成特定功能的sql語句集,經編譯後儲存在資料庫中,使用者通過指定儲存過程的名字並給定引數(也可以無引數)來用執行它,乙個儲存過程是乙個可編譯的函式,它在資料庫中建立並儲存
優點
增強sql語言的功能和靈活性
儲存過程允許標準元件是程式設計
儲存過程能實現較快的執行速度
可以減少網路流量
儲存過程可被作為一種安全機制來充分利用
建立儲存過程的步驟
(1)選中乙個資料庫
(2)改變分隔符,不要讓;作為執行結束的標記,通常情況下,改變分隔符的命令為delimiter $$;
(3)建立儲存過程
(4)執行儲存過程
儲存過程體
儲存過程體中可以使用各種sql語句和過程式語句的組合,來封裝資料庫應用中複雜的業務邏輯和處理規則,以實現資料庫應用的靈活程式設計。
區域性變數
在儲存過程體中可以宣告區域性變數,用來儲存儲存過程體中臨時結果。
declare 區域性變數名稱 資料型別 [default 預設值];
區域性變數的注意事項
區域性變數只能在儲存過程體的begin…end語句塊中宣告。
區域性變數必須在儲存過程體的開頭處宣告。
區域性變數的作用範圍僅限於宣告它的begin..end語句塊,其他語句塊中的語句不可以使用它。
區域性變數不同於使用者變數,兩者區別:區域性變數宣告時,在其前面沒有使用@符號,並且它只能在begin..end語句塊中使用;而使用者變數在宣告時,會在其名稱前面使用@符號,同時已宣告的使用者變數存在於整個會話之中。
set語句
使用set語句為區域性變數賦值
set 區域性變數名稱=值;
select … into 語句
把選定列的值直接儲存到區域性變數中,語法格式
select col_name[,…] into var_name[,…] table_expr ;
col_name:用於指定列名
var_name:用於指定要賦值的變數名
table_expr:表示select語句中的from字句及後面的語法部分
呼叫儲存過程
call sp_name([parameter[,…]]);
sp_name被呼叫儲存過程的名稱
parameter:指定呼叫儲存過程所要使用的引數。
流程控制語句
if語句
if 條件 then
表示式;
elseif 條件2 then
表示式1;
...else
表示式2;
end if;
case語句
case
when then
when then
....
else
end case;
儲存過程的引數
in:輸入引數
表示該引數的值必須在呼叫儲存過程之前指定,在儲存過程修改的值不能被返回
out:輸出引數
該值可以在儲存過程內部改變,並可以返回
inout:輸入輸出引數
該值可在呼叫時指定,並可修改和返回。
帶in的引數
create procedure p_username(in in_name varchar(20))
begin
if in_name is null or in_name='' " then
select * from t_user;
else
select * from t_user where user_name like in_name;
end if;
end
呼叫:call p_username('hanlei')
帶out 的引數
create procedure p_username(in in_name varchar(20),out in_int int)
begin
if in_name is null or in_name='' " then
select * from t_user;
else
select * from t_user where user_name like in_name;
end if;
select found_rows() into p_int;
end
呼叫 :call p_username('lei%',@num);
select @num;
帶inout的引數
create procedure p_inout(inout p_num int)
begin
set p_num=p_num*10;
end呼叫:set @num=10;
call p_inout(@num);
select @num;
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語句加上控制語句的集合,靈活性高 在伺服器端儲存,客戶端呼叫時,降低網路負載 可多次重複被呼叫,可隨時修改,不影響客戶端呼叫...