在记事本上写的存储过程,没有保存,写完直接黏贴到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 存储过程乱码
为了返回的中文不乱码 平时都是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 存储过程乱码
是指MySQL Command Line Client吗?
MySQL 中文显示乱码