一个关于自定义函数的问题,求高手帮助~!
****建立的合并函数**** 
 CREATE   function   jobs(@comid   int) 
 returns   varchar(8000) 
 as 
 begin 
 declare   @str   varchar(8000) 
 set   @str= ' ' 
 select   @str=@str+ '、 '+cast(jobs   as   varchar)   from   R_Jobs   where   comid=@comid   and   ypcs <5   set   @str=right(@str,len   
 (@str)-1) 
 return(@str) 
 End   
 ****调用函数****   
 SELECT   DISTINCT   comid,zhaopin.jobs(a.comid)   AS   jobs2   from   R_jobs   
 ****结果**** 
 出错了,系统提示: 
 “向   substring   函数传递了无效的   length   参数。” 
 但在在函数里检查语句时没有报错!   
 *****修改**** 
 我把函数里的条件   “ypcs <5”取消后就正常显示结果了,但我却希望表R_jobs中符合“ypcs <5”的条件的JOBS字段相加和。   
 求高手给于能实现这个条件的语句怎么修改????????????? 
------解决方案--------------------未发现什么错误呀   
 create table r_jobs(comid int,ypcs int,jobs varchar(5000)) 
 go   
 CREATE function jobs(@comid int) 
 returns varchar(8000) 
 as 
 begin 
 declare @str varchar(8000) 
 set @str= ' ' 
 select @str=@str+ '、 '+cast(jobs as varchar) from R_Jobs where comid=@comid and ypcs <5  
 set @str=right(@str,len(@str)-1) 
 return(@str) 
 End 
 go 
 insert into r_jobs  
 select 1,1, 'asdf ' union 
 select 1,1, 'asdf1 ' union 
 select 1,1, 'asdf2 ' union 
 select 1,1, 'asdf3 ' union 
 select 1,1, 'asdf4 '      
 SELECT DISTINCT comid,dbo.jobs(comid) AS jobs2 from R_jobs     
 drop table r_jobs 
 drop function jobs 
------解决方案--------------------換一種寫法試試。   
 create table r_jobs(comid int,ypcs int,jobs varchar(5000)) 
 go   
 CREATE function jobs(@comid int) 
 returns varchar(8000) 
 as 
 begin 
 declare @str varchar(8000) 
 set @str= ' ' 
 select @str=@str+ '、 '+cast(jobs as varchar) from R_Jobs where comid=@comid and ypcs <5  
 set @str=stuff(@str, 1, 1,  ' ') --改用stuff  
 return(@str) 
 End 
 go 
 insert into r_jobs  
 select 1,1, 'asdf ' union 
 select 1,1, 'asdf1 ' union 
 select 1,1, 'asdf2 ' union 
 select 1,1, 'asdf3 ' union 
 select 1,1, 'asdf4 '      
 SELECT DISTINCT comid,dbo.jobs(comid) AS jobs2 from R_jobs     
 drop table r_jobs 
 drop function jobs