儲存過程是一組sql語句集實現比較複雜的邏輯功能,儲存過程跟觸發器類似,儲存過程是主動呼叫的,且功能比觸發器更加強大,觸發器是某件事出發後自動呼叫。
儲存過程弊端
案例1:計算兩數之和
drop procudure if exists `adder`;
delimiter;;
create definer=`root`@`localhost` procedure `adder`(in a int, in b int)
begin
declare c int;
if a is null then set a=0;
end if;
if b is null then set b=0;
end if;
set c=a+b;
select c as sum;
end;;
delimiter;
呼叫儲存過程
call add(1,2);
執行儲存過程
set @a = 1;
set @b = 2;
call add(@a,@b);
語法
create procedure procedure_name(
[int|out|inout] parameter datatype
)begin
statement;
end
create procedure num_from_employee(in emp_id int, out count_num int)
reads sql data
begin
select count(*) as count_num from employee where id=emp_id;
end
drop procedure if exists `procif`;
delimiter;;
create define=`root`@`localhost` procedure `procif`(in type int)
engin
declare c varchar(255);
if type=0 then set c='parameter is 0';
elseif type=1 then set c='parameter is 1';
else set c='parameter is others, not 0 or 1';
select c;
end;;
delimiter;
執行
set @type=1;
call procif(@type);
drop procedure if exists `proccase`;
delimiter;;
create define='root'@'localhost' procedure `proccase`(in type int)
begin
declare c varchar(255);
case type
when 0 then set c='parameter is 0';
when 1 then set c='parameter is 1';
else set c='parameter is others, not 0 or 1';
end case;
select c;
end;;
delimiter;
drop procedure if exists `procwhile`;
delimter;;
begin
declare i int;
declar j int;
set i=0;
set j=0;
while i<=n do
set s = s+i;
set i = i+1;
end while;
select s;
end;;
delimiter;
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語句加上控制語句的集合,靈活性高 在伺服器端儲存,客戶端呼叫時,降低網路負載 可多次重複被呼叫,可隨時修改,不影響客戶端呼叫...