我在调用存储过程遇到了一个奇怪的问题:
CREATE PROCEDURE zs_Sch
@corp varchar(20)
AS
......--------------
调用时:
ProcedureName:='proc_test1';
Parameters.ParamByName('@Fint').value:='abc';
ExecProc;
以上运行没有问题,可是当 Parameters.ParamByName('@Fint').value:='我们';如果是一个汉字时出错;
...odbc sql server]string data, truncation...信息提示请问高手们遇到过这个问题没有,请问如何解决?
CREATE PROCEDURE zs_Sch
@corp varchar(20)
AS
......--------------
调用时:
ProcedureName:='proc_test1';
Parameters.ParamByName('@Fint').value:='abc';
ExecProc;
以上运行没有问题,可是当 Parameters.ParamByName('@Fint').value:='我们';如果是一个汉字时出错;
...odbc sql server]string data, truncation...信息提示请问高手们遇到过这个问题没有,请问如何解决?
Parameters.ParamByName('@Fint').value:='我们';当赋值汉字时出错;
错误提示:...odbc sql server]string data, truncation...
@corp nvarchar(20)
AS
将参数类型设置为可变长的Unicode的型,你设置为varchar,这样不支持Unicode
@corp nvarchar(20)
AS
但按照你所描述的错误信息,应该是你定义的参数@Fint数据宽度小于4个字符,
因为'abc'只有三个字符,但是'我们',因为是中文字符,而每个中文字符占用二个字节空间,固而会出现...odbc sql server]string data, truncation...信息提示
将@Fint的数据宽度加大即可
不用什么unicode
Parameters.ParamByName('@Fint').DataType := ftWideString;