程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> mysql存儲過程錯誤調試記錄

mysql存儲過程錯誤調試記錄

編輯:MySQL綜合教程

mysql存儲過程錯誤調試記錄


mysql 存儲過程錯誤調試記錄 

公司平台在mysql數據庫上運行,一些存儲過程報錯,調試過程痛苦,記錄錯誤及解決辦法,供參考。

調試環境:dbForge Studio for MySQL 6.1版本,試用版;

\

1、BIZ_GET_ORGAN_BY_CONDITION

問題1:提示遞歸調用錯誤,遞歸次數太多;根據業務設置,最大255;

SET@@max_sp_recursion_depth = 10;

常見如亂碼造成導致條件失效,出現死循環;

問題2:變量的內容是亂碼,數據庫內容是中文,urt-8

declarevc_agency_type varchar(64) CHARACTER SET utf8;

定義變量時,需設置字符集;

問題3:存儲過程參數傳遞中文,是亂碼;定義參數同上;

2、BIZ_QUERY_USER_BY_CONDITION

問題1:row_count()返回-1

select 語句的返回值用FOUND_ROWS();row_count()一般是插入、修改、刪除的影響行數;

問題2:mysql關於整數的除法

declare page_count int;

set page_count = 15 / 10 ;結果自動四捨五入為 2;

改用下面的語句:set page_count =FLOOR(result_count / page_size);

3、C3_BIZ_DATA_LIMIT

問題1:游標有記錄,但是取值為空:游標語句中的變量不能和字段同名,且不要是關鍵字;

問題2:游標取不到值;

字段名稱和變量名稱一定不能相同;如果必須相同,給表加上別名進行區別;

問題3:out參數不能傳值

修改成inout類型,存儲過程共有三種類型:in out inout;

問題4:right函數改成subStr函數;

4、BIZ_CHANGER_ORG_PARENT_ID

問題1:mysql沒有if not exists 語法,所以需要取總數,然後在判斷行數量;

問題2:update不支持子查詢問題;

update sys_org set leaftype = 1where id = (

selectorg_parent_id from sys_org where id = 變量

);

修改為:

update sys_org set leaftype = 1where id = (

select org_parent_id from

(select* from sys_org WHERE id = vc_source_id ) a

);

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