在记事本上写的存储过程,没有保存,写完直接黏贴到cmd里
为了返回的中文不乱码 平时都是set names gbk
查看过程代码
若用select body from mysql.proc 中文正常
若用show create procedure  则显示中文乱码
如下
mysql> show variables like 'chara%';
+--------------------------+-------------------------------------------+
| Variable_name            | Value                                     |
+--------------------------+-------------------------------------------+
| character_set_client     | gbk                                       |
| character_set_connection | gbk                                       |
| character_set_database   | utf8                                      |
| character_set_filesystem | binary                                    |
| character_set_results    | gbk                                       |
| character_set_server     | utf8                                      |
| character_set_system     | utf8                                      |
| character_sets_dir       | D:\MySQL\MySQL Server 5.0\share\charsets\ |
+--------------------------+-------------------------------------------+mysql> select body from mysql.proc where specific_name='sp_search_dept'\G
*************************** 1. row ***************************
body: begin
if p_dept=1 then
        select fname,lname,depart from employee where depart='研究部';
elseif p_dept=2 then
        select fname,lname,depart from employee where depart='AC部';
elseif p_dept=3 then
        select fname,lname,depart from employee where depart='IT部';
elseif p_dept=4 then
        select fname,lname,depart from employee where depart='人事部';
else
        select fname,lname,depart from employee where depart='经理部';
end if;
end
1 row in set (0.00 sec)mysql> show create procedure sp_search_dept\G
*************************** 1. row ***************************
       Procedure: sp_search_dept
        sql_mode: STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER
Create Procedure: CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_search_dept`(in p_dept int)
begin
if p_dept=1 then
        select fname,lname,depart from employee where depart='?о???';
elseif p_dept=2 then
        select fname,lname,depart from employee where depart='AC??';
elseif p_dept=3 then
        select fname,lname,depart from employee where depart='IT??';
elseif p_dept=4 then
        select fname,lname,depart from employee where depart='?????';
else
        select fname,lname,depart from employee where depart='????';
end if;
end
1 row in set (0.00 sec)
若set names utf8 
则 select 和 show 两种查看方式 中文都正常
但是平时返回中文数据就显乱码
为什么会这样?有什么解决办法?mysql 存储过程乱码