程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> MySQL觸發器應用與其存儲過程的實際操作

MySQL觸發器應用與其存儲過程的實際操作

編輯:MySQL綜合教程

以下的文章主要描述的是MySQL觸發器的實際應用與其存儲過程的實際操作,以下的文章將會給你提供相應的詳細方案講解,以下就是相關內容的具體描述。希望會給你帶來一些幫助在此方面。

觸發器:

MySQL數據庫創建觸發器的格式如下:

create trigger <觸發器名稱>

{ before | after}

{insert | update | delete}

on <表名>

for each row

<觸發器SQL語句>

<觸發器SQL語句>:觸發器要執行的SQL語句,如果該觸發器要執行多條SQL語句,要將多條語句放在begin…end塊中。

Show triggers 顯示所有的觸發器信息!

存儲過程:

創建 

  1. DELIMITER $$  
  2. DROP PROCEDURE IF EXISTS `test`.`outprint`$$  
  3. CREATE PROCEDURE print1(out a varchar(100))  
  4. BEGIN  
  5. select name from info into a;  
  6. END$$  
  7. DELIMITER ;  

調用

  1. Call print1(@c);  
  2. Select @c;  

注意

這樣傳值只能查找一個值賦給a

Select * from info into a就錯了

Show create {procedure | function } 名字

查看存儲過程和函數

Drop {procedure | function} [if exists] 名字

Alter {procedure | function} 名字

注意:通過 begin end 可以來包含多個語句,每個語句以“;”結尾。

創建插入

  1. DELIMITER $$  
  2. DROP PROCEDURE IF EXISTS `test`.`insert_info`$$  
  3. CREATE DEFINER=`root`@`%` PROCEDURE `insert_info`(in id int(5),in name varchar(50),in age int(5))  
  4. begin  
  5. insert into info values (id,name,age);  
  6. end$$  
  7. DELIMITER ;  

調用

  1. call insert_info(2,'rrr',56); 

創建插入輸出驗證密碼用)

  1. Delimiter $$   
  2. Create procedure validateuser  
  3. (in username varchar(20),out param1 varchar(100))   
  4. Begin   
  5. Select Pwd into param1 from welefen.user   
  6. where Name=username;   
  7. End $$ 

調用

  1. call check1('sss',@pw);  
  2. 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

為了說明存儲過程語法的應用,存儲過程來實現它:

創建存儲過程:

  1. delimiter $$  
  2. drop procedure if exists jgguess$$  
  3. create procedure jgguess(in number int)   
  4. begin   
  5. declare param1 int default 1;   
  6. 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; #退出循環

  1. end if;  
  2. end loop jiaogu;   
  3. end $$   
  4. delimiter ;  

調用:

  1. call jgguess(9);  
  2. select @a;  

以上的相關內容就是對MySQL中觸發器和存儲過程的介紹,望你能有所收獲。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved