程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> 關於MYSQL數據庫 >> MySql存儲過程 帶參數處理方式

MySql存儲過程 帶參數處理方式

編輯:關於MYSQL數據庫
 下文介紹的MySql存儲過程是帶參數的存儲過程(動態執行SQL語句),該MySQL存儲過程是根據用戶輸入的條件和排序方式查詢用戶的信息,排序條件可以沒有調用方式:

  call GetUsersDynamic('age<=30','');

 

  1. /********動態查詢用戶的信息********/    
  2. CREATE PROCEDURE GetUsersDynamic(WhereCondition varchar(500),OrderByExpress varchar(100))    
  3. begin    
  4. declare stmt varchar(2000);    
  5. if LENGTH(OrderbyExpress)>0 then    
  6. begin    
  7.      set @sqlstr=concat('select id,name,passWord,age,getdate(adddate) as AddDate from users where ',WhereCondition,' order by ',OrderByExpress);    
  8. end;    
  9. else    
  10. begin    
  11.      set @sqlstr=concat('select id,name,passWord,age,getdate(adddate) as AddDate from users where ',WhereCondition);    
  12. end;    
  13. end if;    
  14. prepare stmt from @sqlstr;    
  15. execute stmt;    
  16. end;   

  getdate()是一個自定義的函數,作用是返回日期的短格式

 

  1. CREATE DEFINER=`root`@`localhost` FUNCTION `getdate`($date datetime) RETURNS varchar(50) CHARSET latin1    
  2. return date_format($date,'%Y-%m-%d');  

  動態插入數據的MySQL存儲過程,(注意四個單引號表示一個一引號):

 

  1. CREATE DEFINER=`root`@`localhost` PROCEDURE `InsertUser`(in name2 varchar(50),in passWord2 varchar(32),in age2 int,in adddate2 datetime)    
  2. begin    
  3. DECLARE stmt varchar(2000);    
  4. set @sqlstr=concat('insert into users(name,passWord,age,adddate) values(');    
  5. set @sqlstr=concat(@sqlstr,'''',name2,'''',',','''',passWord2,'''',',',age2,',','''',adddate2,'''',')');    
  6. prepare stmt from @sqlstr;    
  7. execute stmt;    
  8. end;

 

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