读书人

调用MYSql存储过程有关问题

发布时间: 2012-03-23 12:06:21 作者: rapoo

调用MYSql存储过程问题。
MySql中定义的存储过程:

SQL code
CREATE DEFINER=`root`@`localhost` PROCEDURE `proc_HZChatRecLog`(IN _Sender varchar(20), IN _SIP varchar(15), IN _Accepter varchar(20),   IN _AIP varchar(15), IN _Msg varchar(3000))BEGIN  SET _Msg=replace(_Msg, '&*', '');  IF RTRIM(_Msg) <> '' THEN   insert into TABHZChatLog(Sender, SenderIP, Accepter, AccepterIP, Msg, CreateTime) values    (_Sender, _SIP, _Accepter, _AIP, _Msg, Now());     END IF;END


在查询分析器调用没有问题(主要是参数含中文):
SQL code
call proc_HZChatRecLog ('我们', 'ddfdf', '我们', '192.168.99.100', '我们');


在delphi中调用:
Delphi(Pascal) code
procedure TForm1.Button1Click(Sender: TObject);var  a, b, c, d: string;begin  a := 'addd';  b := '192.168.110.8';  c := 'cccc';  d := '192.168.100.243';  ADOStoredProc1.Parameters.Clear;  ADOStoredProc1.ProcedureName := 'proc_HZChatRecLog';  ADOStoredProc1.Parameters.Refresh;  ADOStoredProc1.Parameters.CreateParameter('_Sender', ftString, pdInput, 20, a);  ADOStoredProc1.Parameters.CreateParameter('_SIP', ftString, pdInput, 15, b);  ADOStoredProc1.Parameters.CreateParameter('_Accepter', ftString, pdInput, 20, c);  ADOStoredProc1.Parameters.CreateParameter('_AIP', ftString, pdInput, 20, d);  ADOStoredProc1.Parameters.CreateParameter('_Msg', ftString, pdInput, 3000, a);  ADOStoredProc1.ExecProc;end;


只要其中一个参数改成中文的,就有问题了。请问该如何解决



[解决办法]
可能是控件只支持ansi字符集吧,中文属于unicode范畴了,会被截断

读书人网 >.NET

热点推荐