以下的文章主要介紹的是mysql 儲存過程中的亂碼的實際解決方案,我們大家都知道儲存過程有問題的話,一般表現在無法對資料進行正確查詢。以下就是文章的具體內容介紹,望你會有所收穫。
資料表和字段都是 utf8 儲存的中文內容。在連線資料庫後也使用 set names utf8; 設定了編碼。但是在mysql 儲存過程中無法查詢中文內容的字段。由於一些邏輯處理的原因,儲存過程使用了游標,同時定義了一些區域性變數。
create procedure `proc_foobar`(id integer)
begin
declare user_id varchar(32) ;
省略**若干
end
user_id 在**中參與了乙個 查詢
select * from `table1` where `uid` = user_id
在儲存過程中輸出 user_id 發現英文內容正常,但是中文內容亂碼。
開始以為mysql 儲存過程的編碼有問題,但是不使用變數的內容又正常。上網查了一下,有人遇到同樣的問題:
但是顯然,他的問題只要正確設定編碼即可。
突然靈光一現,nnd,character set 這個東西我忽略了。正解如下:
create procedure `proc_foobar`(id integer)
begin
declare code, user_id varchar(32) character set utf8;
省略**若干
end
Mysql的儲存過程中的異常
以前看到一篇mysql的儲存過程,覺得很簡單 要使用mysql的儲存過程,需要 1 mysql的版本在5.0以上,低版本的海不支援儲存過程 2 資料表應該是innodb的,其他格式的不支援事務 做乙個實驗 建立兩個表,在儲存過程中向兩個表插入資料,使向第一表的插入操作執行成功,向第二個表的操作執行失...
mysql儲存過程中變數的使用
在mysql儲存過程中,宣告乙個變數可以使用declare vi num 變數名 int 資料型別 的方式。還可以直接使用 變數名的方式,直接使用乙個變數。請看以下儲存過程 drop procedure if exists pro2 create procedure pro2 begin decla...
mysql儲存過程中的異常處理
定義異常捕獲型別及處理方法 declarehandler action handler for condition value condition value statement handler action continue exit undo condition value mysql erro...