以前的方法:
ALTER FUNCTION [dbo].[GetUserManagerByTeam]
(
-- Add the parameters for the function here
@userid int,
@TeamName varchar(100)
)
RETURNS TABLE 
AS
RETURN 
(
Select FieldValue.uid,userfield.FieldAliasName,FieldValue.[content] From FieldValue
Join userfield on userfield.id=FieldValue.Fieldid
Join userPower on userPower.fieldid = userfield.id 
and userPower.userid=@userid and UId in
(Select UId From FieldValue Where FieldId=8 and [Content]=@TeamName)

但是现在的需求是可以传不只一个TeamName,也就是
Select UId From FieldValue Where FieldId=8 and [Content]=@TeamName or [Content]=@TeamName1 
or [Content]=@TeamName2 or...

该怎么该??????
在线等答复,请教!!!!!

解决方案 »

  1.   

    @TeamName 可以传入某种格式的字符串,再将字符串作分割等处理,最后拼接你的SQL即可
      

  2.   

    传一条长长的字符串参数进去吧就是把你的这Where FieldId=8 and [Content]=@TeamName or [Content]=@TeamName1
    or [Content]=@TeamName2 or...一大串,事先拼凑好,然后把它作为一个参数传进去吧然后函数体里面改用拼凑SQL语句的方式如declare @strSQL   varchar(6000)       -- 主语句,该变量用于拼凑完整的SQL语句用
    //下面开始拼凑
    set @strSQL = 'select top ' + str(@PageSize) + ' * from ['
    set @strSQL += '....................................'
    //搞定后,最后执行上面的完整语句
    exec (@strSQL)