不好意思,应该是这样:
CREATE function f_1(@appdept VARCHAR(20),@cond varchar(1000) )
returns varchar(8000)
as
begin
  declare @str varchar(8000)
  declare @command varchar(8000)
  set @str=''
  set @command='select @str=@str+'',''+convert(varchar(20), id) from bgyp_app where appdept='+@appdept+' and '+@cond
  exec (@command)     --应该是这儿报错
  set @str=right(@str,len(@str)-1)   
  return(@str)
End

解决方案 »

  1.   

    函数不能使用exec,改用存储过程吧
      

  2.   

    同意楼上,另外,你要输出变量,用sp_executesql吧,exec不行的
     输出参数
    eg:
    declare @num,
            @sqls
    set @sqls='select count(*) from '+@servername+'a.dbo.b'
    exec(@sqls)
    我如何能将exec执行的结果存入变量@num中declare @num int,
            @sqls nvarchar(4000)
    set @sqls='select @a=count(*) from '+@servername+'.a.dbo.b'
    exec sp_executesql @sqls,N'@a int output',@num output
    select @num
      

  3.   

    谢谢pbsql(风云)。
    今天你是第二次帮我了。这个函数也是在你给我写的原型上改的。
      

  4.   

    函数不能使用exec,改用存储过程吧