看不懂,乱七八糟的~试试下面这个行不行吧~create function dbo.GetJobname 
@jobID varchar(1000)
returns varchar(1000)
as 
begin
declare @re varchar(1000)
select @re=''
select @re=@re+posname from position_view where charindex('/'+@JobID+'/','/'+posname+'/')>0
return @re
end

解决方案 »

  1.   

    try:
    ALTER   FUNCTION dbo.GetJobname 
    (@JobID  Varchar(60)) --用Varchar,用char會補空格
    RETURNS nvarchar(300) AS  
    BEGIN 
    Declare @i Int
    Declare @tmpID Int
    Declare @JobName nvarchar(300) 
    While CharIndex('/',@JobID)>0
    Begin
    Set @i=CharIndex('/',@JobID)
    Set @tmpID=Left(@JobID,@i-1)
    select @JobName=@JobName+Rtrim(posname) from position_view where posid=@tmpID
    Set @JobID=Stuff(@JobID,1,@i,'')
    End
    If Len(@JobID)>0
    select @JobName=@JobName+Rtrim(posname) from position_view where posid=@JobID
    End
      

  2.   

    光顧著修改你的函數去了,實際可以這麼簡寫。ALTER   FUNCTION dbo.GetJobname 
    (@JobID  Varchar(60)) --用Varchar,用char會補空格
    RETURNS nvarchar(300) AS  
    BEGIN 
    Declare @JobName nvarchar(300) 
    Set @JobName=''
    select @JobName=@JobName+Rtrim(posname) from position_view where CharIndex('/'+Rtrim(posid)+'/','/'+@JobID+'/')>0
    RETURN @JobName
    End
    上個函數加上RETURN @JobName
      

  3.   

    create function dbo.GetJobname 
    @jobID varchar(1000)
    returns varchar(1000)
    as 
    begin
    declare @re varchar(1000)
    select @re=''
    select @re=@re+posname from position_view where charindex('/'+@JobID+'/','/'+posname+'/')>0
    return @re
    end
      

  4.   

    问题就出在declare @tmpid char(3)换成varchar就好了