1、delimiter // ,聲明分隔符:DELIMITER是分割符的意思,因為MySQL默認以";"為分隔符,如果我們沒有聲明分割符,那么編譯器會把存儲過程當成SQL語句進行處理,則存儲過程的編譯過程會報錯,所以要事先用DELIMITER關(guān)鍵字申明當前段分隔符,這樣MySQL才會將";"當做存儲過程中的代碼,不會執(zhí)行這些代碼(這里如果不懂的話,你可以通過試錯的方法來理解)。
龍山ssl適用于網(wǎng)站、小程序/APP、API接口等需要進行數(shù)據(jù)傳輸應用場景,ssl證書未來市場廣闊!成為創(chuàng)新互聯(lián)建站的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:028-86922220(備注:SSL證書合作)期待與您的合作!
2、編寫存儲過程的格式:CREATE PROCEDURE([[IN |OUT |INOUT ]參數(shù)名數(shù)據(jù)類形...])
例子:
1)create procedure proc1(out s int) // 只有輸出
2)create procedure proc2(in p_in bigint) // 只有輸入
3)create procedure proc15() // 沒有輸入與輸出
4)create procedure demo_multi_param(in id bigint,in name varchar(32),out c int) //多輸入與輸出
3、過程體的開始與結(jié)束使用BEGIN與END進行標識。
4、select count (*) into s from student; // 過程體,一系列的邏輯語句,sql語句
5、delimiter ; 用完了之后要把分隔符還原。
這樣:
CREATE?PROCEDURE?sp_add(a int, b int,out?c int)
begin
set c=a+ b;
end;
調(diào)用過程:
call sp_add (1,2,@a);
select @a;
擴展資料:
注意事項
存儲過程(stored procedure)是一組為了完成特定功能的SQL語句集合,經(jīng)編譯后存儲在服務器端的數(shù)據(jù)庫中,利用存儲過程可以加速SQL語句的執(zhí)行。
存儲過程分為系統(tǒng)存儲過程和自定義存儲過程。
系統(tǒng)存儲過程在master數(shù)據(jù)庫中,但是在其他的數(shù)據(jù)庫中可以直接調(diào)用,并且在調(diào)用時不必在存儲過程前加上數(shù)據(jù)庫名,因為在創(chuàng)建一個新數(shù)據(jù)庫時,系統(tǒng)存儲過程在新的數(shù)據(jù)庫中會自動創(chuàng)建。
自定義存儲過程,由用戶創(chuàng)建并能完成某一特定功能的存儲過程,存儲過程既可以有參數(shù)又有返回值,但是它與函數(shù)不同,存儲過程的返回值只是指明執(zhí)行是否成功,并不能像函數(shù)那樣被直接調(diào)用,只能利用execute來執(zhí)行存儲過程。
創(chuàng)建存儲過程
SQL Server創(chuàng)建存儲過程:
create procedure? 過程名
@parameter?????? 參數(shù)類型
@parameter????? 參數(shù)類型
。。。
as
begin
end
執(zhí)行存儲過程:execute 過程名
創(chuàng)建存儲過程
mysql delimiter $ -- delimiter $是設置 $為命令終止符號,代替默認的分號,因為分號有其他用處.
mysql create procedure sp_test(IN pi_id int, OUT po_name varchar(10))
- begin
- select * from test.tb_test;
- select tb_test.name into po_name from test.tb_test where tb_test.id = pi_id;
- end
- $
Query OK, 0 rows affected (0.00 sec)
mysql delimiter ; -- 恢復分號作為分隔終止符號
5.調(diào)用存儲過程
mysql set @po_name='';
Query OK, 0 rows affected (0.00 sec)
mysql call sp_test(1,@po_name);