我在 SQL-FRONT 写了个存储过程,其中用到这句
SET@sql=concat(@sql,'Where',_WhereClause);
执行时这句出错系统提示说语法错误,错误原因是concat的三个参数类型不一致
(gb2312_chinese_ci,gb2312_chinese_ci,latin)SQL-FRONT的系统登录设置的字符是gb2312,
_WhereClause定义在存储哦过程的参数中,定义方式:_WhereClause VARCHAR(2000);SET@sql='Select InfoID FROM table';问题:如何把_WhereClause的类型设置成与前面的@sql类型相同的?

解决方案 »

  1.   

    像你这种情况,不如将sqlfront的登录设置字符为latin1
      

  2.   

    to:iihero
    不行啊。。设置成latin1,表中的中文在存储过程执行后成了乱码。
      

  3.   


    这样不行的话,你还是改用命令行吧。
    mysql> show variables like '%char%';
    +--------------------------+----------------------------+
    | Variable_name            | Value                      |
    +--------------------------+----------------------------+
    | character_set_client     | gbk                        | 
    | character_set_connection | gbk                        | 
    | character_set_database   | gbk                        | 
    | character_set_filesystem | binary                     | 
    | character_set_results    | gbk                        | 
    | character_set_server     | gbk                        | 
    | character_set_system     | utf8                       | 
    | character_sets_dir       | /usr/share/mysql/charsets/ | 
    +--------------------------+----------------------------+
    8 rows in set (0.00 sec)
    mysql> create function hello(s varchar(20), s2 varchar(20)) returns varchar(50)
        -> return concat('hello ', s, s2);
        -> //
    Query OK, 0 rows affected (0.02 sec)
    mysql> select hello('angelfly ', ' 中文');
        -> //
    +-----------------------------+
    | hello('angelfly ', ' 中文') |
    +-----------------------------+
    | hello angelfly  中文        | 
    +-----------------------------+
    1 row in set (0.03 sec)mysql> delimiter //
      

  4.   

    TO:iihero
    谢谢!我试试看。
      

  5.   

    参考下贴中的检查方法http://blog.csdn.net/ACMAIN_CHM/archive/2009/05/12/4174186.aspx
    MySQL 中文显示乱码
      

  6.   

    谢谢你们的帖子,我最后找到办法了。是通过把
    _WhereClause VARCHAR(2000);改作 _WhereClause varchar(2000) charset gb2312;就可以了。to:ACMAIN_CHM看了你的帖子,真是包容四海啊,学习了。看看我的解决方法在你给的方法中真是沧海一粟
      

  7.   

    _WhereClause定义在存储哦过程的参数中,定义方式:_WhereClause VARCHAR(2000);--->我也碰到过,加下字符集:
    declare _WhereClause VARCHAR(2000) charset gb2312