set @title=(select title from tableb where @fieldStr=@bid)
---上面改为Select @title=title from tableb where @fieldStr=@bid

解决方案 »

  1.   

    declare @title varchar(30)
    declare @fieldStr varchar
    declare @bid int
    declare @typeid int 
    set @bin=1
    set @typeid =1if (@typeid =1)
    set @fieldStr='bbb' --根据@typeid的值动态改变查询字段if (@typeid =2)
    set @fieldStr='aaa'--根据@typeid的值动态改变查询字段
    declare @sql nvarchar(1000)
    set @sql=N'select @title=title from tableb where '+@fieldStr+'=@bid)'exec sp_executesql @sql,N'@bid int,@title varchar(30) output',@bid,@title outputprint @title
      

  2.   

    set @title=(select title from tableb where @fieldStr=@bid)
    ---上面改为
    declare @sql nvarchar(4000)
    set @sql=N'Select @title=title from tableb where '+@fieldStr+'=@bid'
    exec sp_executesql @sql,N'@title varchar out,@bid int',@title out ,@bid
      

  3.   

    DECLARE @sql NVARCHAR(1000)
    SET @sql=N'SELECT @title=title from tableb where ' + @fieldStr + '=' + RTRIM(@bid)
    EXEC sp_executesql @sql,N'@title VARCHAR(100) OUTPUT',@title OUTPUT