日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產(chǎn)品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
MySQL存儲過程中的語法學習

以下的文章主要介紹的是MySQL存儲過程中的語法學習,主要內(nèi)容包括名字,參數(shù)列表,與很多SQL語句的SQL語句集。以下就是具體方案的描述,希望會給你帶來一些幫助在此學習方面。

10年積累的成都網(wǎng)站設計、成都網(wǎng)站制作經(jīng)驗,可以快速應對客戶對網(wǎng)站的新想法和需求。提供各種問題對應的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡服務。我雖然不認識你,你也不認識我。但先網(wǎng)站制作后付款的網(wǎng)站建設流程,更有招遠免費網(wǎng)站建設讓你可以放心的選擇與我們合作。

一個存儲過程包括名字,參數(shù)列表,以及可以包括很多SQL語句的SQL語句集。

創(chuàng)建存儲過程:

語法:

 
 
 
  1. CREATE PROCEDURE p()  
  2. BEGIN  

此存儲過程的正文

 
 
 
  1. END  
  2. CREATE PROCEDURE productpricing()  
  3. BEGIN  
  4. SELECT Avg(pro_price) AS priceaverage  
  5. FROM products;  
  6. END;  

begin…end之間是存儲過程的主體定義

MySQL的分界符是分號(;)

調用存儲過程的方法是:

CALL加上過程名以及一個括號

例如調用上面定義的存儲過程

 
 
 
  1. CALL productpricing();  

哪怕是不用傳遞參數(shù),存儲過程名字后面的括號“()”也是必須的

刪除存儲過程的方法是

 
 
 
  1. DROP PROCUDURE productpricing; 

創(chuàng)建帶參數(shù)的存儲過程:

 
 
 
  1. CREATE PROCUDURE productpricing(  
  2. OUT p1 DECIMAL(8,2),  
  3. OUT ph DECIMAL(8,2),  
  4. OUT pa DECIMAL(8,2)  
  5. )  
  6. BEGIN  
  7. SELECT Min(prod_price) INTO pl FROM products;  
  8. SELECT Max(prod_price) INTO ph FROM products;   
  9. SELECT Avg(prod_price) INTO pa FROM products;  
  10. END;  

DECIMAL用于指定參數(shù)的數(shù)據(jù)類型

OUT用于表明此值是用于從存儲過程里輸出的

MySQL支持 OUT, IN, INOUT

調用帶參數(shù)的存儲過程:

 
 
 
  1. CALL productpricing(@pricelow,  
  2. @pricehigh,  
  3. @priceaverage);   

所有的參數(shù)必須以@開頭

要想獲取@priceaverage的值,用以下語句

 
 
 
  1. SELECT @priceaverage; 

獲取三個的值,用以下語句

 
 
 
  1. SELECT @pricehigh, @pricelow, @priceaverage; 

另一個帶IN和OUT參數(shù)的存儲過程:

 
 
 
  1. CREATE PROCEDURE ordertotal(  
  2. IN onumber INT,  
  3. OUT ototal DECIMAL(8,2)  
  4. )  
  5. BEGIN  
  6. SELECT Sum(item_price*quantity)  
  7. FROM orderitems  
  8. WHERE order_num = onumber 
  9. INTO ototal;  
  10. END;  
  11. CALL ordertotal(20005, @total);  
  12. SELECT @total;  

添加一個完整的例子:(這是一個自定義分頁的存儲過程)

 
 
 
  1. DELIMITER $$  
  2. DROP PROCEDURE IF EXISTS `dbcall`.`get_page`$$  
  3. CREATE DEFINER=`root`@`localhost` PROCEDURE `get_page`(  
  4. /**//*Table name*/  
  5. tableName varchar(100),  
  6. /**//*Fileds to display*/  
  7. fieldsNames varchar(100),  
  8. /**//*Page index*/  
  9. pageIndex int,  
  10. /**//*Page Size*/  
  11. pageSize int,   
  12. /**//*Field to sort*/  
  13. sortName varchar(500),  
  14. /**//*Condition*/  
  15. strWhere varchar(500)  
  16. )  
  17. BEGIN   
  18. DECLARE fieldlist varchar(200);   
  19. if fieldsNames=''||fieldsNames=null THEN  
  20. set fieldlist='*';  
  21. else  
  22. set fieldlist=fieldsNames;   
  23. end if;  
  24. if strWhere=''||strWhere=null then  
  25. if sortName=''||sortName=null then   
  26. set @strSQL=concat('SELECT ',fieldlist,' FROM ',tableName,' LIMIT ',(pageIndex-1)*pageSize,',',pageSize);  
  27. else  
  28. set @strSQL=concat('SELECT ',fieldlist,' FROM ',tableName,' ORDER BY ',sortName,' LIMIT ',(pageIndex-1)*pageSize,',',pageSize);   
  29. end if;  
  30. else  
  31. if sortName=''||sortName=null then  
  32. set @strSQL=concat('SELECT ',fieldlist,' FROM ',tableName,' WHERE ',strWhere,' LIMIT ',(pageIndex-1)*pageSize,',',pageSize);  
  33. else  
  34. set @strSQL=concat('SELECT ',fieldlist,' FROM ',tableName,' WHERE ',strWhere,' 
    ORDER BY ',sortName,' LIMIT ',(pageIndex-1)*pageSize,',',pageSize);   
  35. end if;  
  36. end if;   
  37. PREPARE stmt1 FROM @strSQL;   
  38. EXECUTE stmt1;  
  39. DEALLOCATE PREPARE stmt1;  
  40. END$$  
  41. DELIMITER ;  

以上的相關內(nèi)容就是對MySQL存儲過程語法學習的介紹,望你能有所收獲。


文章名稱:MySQL存儲過程中的語法學習
文章位置:http://m.5511xx.com/article/copcici.html