delphi调用sqlserver2000自定义函数时出现的有关问题(疑与中文字符有关)

delphi调用sqlserver2000自定义函数时出现的问题(疑与中文字符有关)
go

create function [dbo].[m_split](@c varchar(2000),@split varchar(2))  

  returns @t table(col varchar(200))  
as  
begin  
  while(charindex(@split,@c)<>0)  
  begin  
  insert @t(col) values (substring(@c,1,charindex(@split,@c)-1))  
  set @c = stuff(@c,1,charindex(@split,@c),'')  
  end  
  insert @t(col) values (@c)  
  return  
end

----该函数引用自maco_wang 字符分割字符串
引用示例:
在delphi 中调 dbo.m_split 时
with DataModule1.temp do
begin
close;sql.Clear;
sql.Add('select * from dbo.m_split(:a,:b)');
Parameters.ParamByName('a').Value:=str;
Parameters.ParamByName('b').Value:='/';
open;
end;
当给str赋值str:='优秀/及格/基本/不及格';得到的结果却是:
优秀
及格

当给str赋值str:='aaaa12345/bbbb12345/cccc123456/dddd12345'得到的结果为:
aaaa12345
bbbb12345
cccc123456
dddd12345

问题:为何在delphi中给string变量str赋值中文字符串结果不对,赋值英文字符串结果正确
(注:该自定义函数在sqlserver2000查询分析器中运行均正确)
求解?



------解决方案--------------------
不用参数形式,用变量

sql.Add('select * from dbo.m_split('''+str+''',''/'')');