以下的文章主要描述的是MySQL觸發器的實際應用與其存儲過程的實際操作,以下的文章將會給你提供相應的詳細方案講解,以下就是相關內容的具體描述。希望會給你帶來一些幫助在此方面。
觸發器:
MySQL數據庫創建觸發器的格式如下:
create trigger <觸發器名稱>
{ before | after}
{insert | update | delete}
on <表名>
for each row
<觸發器SQL語句>
<觸發器SQL語句>:觸發器要執行的SQL語句,如果該觸發器要執行多條SQL語句,要將多條語句放在begin…end塊中。
Show triggers 顯示所有的觸發器信息!
存儲過程:
創建
- DELIMITER $$
- DROP PROCEDURE IF EXISTS `test`.`outprint`$$
- CREATE PROCEDURE print1(out a varchar(100))
- BEGIN
- select name from info into a;
- END$$
- DELIMITER ;
調用
- Call print1(@c);
- Select @c;
注意
這樣傳值只能查找一個值賦給a
Select * from info into a就錯了
Show create {procedure | function } 名字
查看存儲過程和函數
Drop {procedure | function} [if exists] 名字
Alter {procedure | function} 名字
注意:通過 begin end 可以來包含多個語句,每個語句以“;”結尾。
創建插入
- DELIMITER $$
- DROP PROCEDURE IF EXISTS `test`.`insert_info`$$
- CREATE DEFINER=`root`@`%` PROCEDURE `insert_info`(in id int(5),in name varchar(50),in age int(5))
- begin
- insert into info values (id,name,age);
- end$$
- DELIMITER ;
調用
- call insert_info(2,'rrr',56);
創建插入輸出驗證密碼用)
- Delimiter $$
- Create procedure validateuser
- (in username varchar(20),out param1 varchar(100))
- Begin
- Select Pwd into param1 from welefen.user
- where Name=username;
- End $$
調用
- call check1('sss',@pw);
- select @pw;
驗證角谷猜想
角谷猜想:給定一個整數x,若x%2=1,則x=3*x+1,
否則x=x/2,
如此循環下去
,經過有限步驟必 能得到1。
例如: 初始整數為9 則
9->28->14->7->22->11->34->17->52->26
->13->40->20->10->5->16->8->4->2->1
為了說明存儲過程語法的應用,存儲過程來實現它:
創建存儲過程:
- delimiter $$
- drop procedure if exists jgguess$$
- create procedure jgguess(in number int)
- begin
- declare param1 int default 1;
- set @a=concat(number);
jiaogu:loop #循環開始
set param1=number%2;
if param1=1 then set number=number*3+1; #number 為奇數,將它乘3加 1
else set number=number/2;
end if;
set @a=concat(@a,'->',number);
if number>1 then iterate jiaogu; #number 不為 1,繼續循環
else
leave jiaogu; #退出循環
- end if;
- end loop jiaogu;
- end $$
- delimiter ;
調用:
- call jgguess(9);
- select @a;
以上的相關內容就是對MySQL中觸發器和存儲過程的介紹,望你能有所收獲。