DECLARE @SQL  varchar(300),
@Tmp varchar(50)
set @SQL='select @Tmp =' + @Item + ' 
          from tbGemColor_t 
          where jcbh=''' + @jcbh + ''''
exec sp_executesql @SQL,'@Tmp varchar(50) output',@Tmp output
select @Tmp

解决方案 »

  1.   

    我的意思就是想动态生成一个语句,然后调用EXEC执行.
      

  2.   

    --try
    declare @sql nvarchar(200)
    declare @Tmp varchar(50) 
    set @sql=N'select @Tmp='+@Item+' from tbGemColor_t where jcbh=''' + @jcbh + ''' '
    exec sp_executesql @sql,N'@Tmp varchar(50)  output',@Tmp output
      

  3.   

    试一试这样是否可行?
    DECLARE @SQL  varchar(300),
    @Tmp varchar(50)set @SQL='select'+ @Tmp+' =' + @Item + ' from tbGemColor_t where jcbh=''' + @jcbh + ''''
    print @SQL
    EXEC(@SQL)
    set @Return=@Tmp
      

  4.   

    TO:
    mschen(发光的星星) ( )存储过程检测成功!执行也没有什么问题,但是怎么返回回了一个NULL值,
    我数据库中是用值的
      

  5.   

    CREATE  PROCEDURE  PSaveTestValue
    @jcbh varchar(50),
    @Value varchar(50),
    @Item varchar(50),
    @Man varchar(50),
    @BModifyOtherValue varchar(10),
    @Return varchar(50) output
    AS    
    DECLARE @SQL  varchar(300)begin transaction
    set @Return='ZOUJY' ----代表正常返回

    if @BModifyOtherValue='FALSE'  --不能修改其它人员的检测数据的标志
    BEGIN
    BEGIN
        --其它人员检测过的数据,不能进行修改
    set @sql=N'select @Tmp='+@Item+' from tbGemColor_t where jcbh=''' + @jcbh + ''''
    print @SQL
    exec sp_executesql @sql,N'@Tmp varchar(50)  output',@Tmp output
    --EXEC(@SQL)
    if @tmp<>@Man
    begin
    set @Return=@Tmp
    commit transaction
    return
    end END
    END --Update tbGem_T set @Item=@Value  where jcbh=@jcbh
    set @SQL='Update tbGem_T set ' + @Item + '=''' + @Value + ''' where jcbh=''' + @jcbh +''''
    EXEC(@SQL)
    IF @@ERROR <> 0
    goto ERRHandle
    --exec(Update tbGemColor_T set @Item=@Man where jcbh=@jcbh)
    set @SQL='Update tbGemColor_T set ' + @Item + '=''' + @Man + ''' where jcbh=''' + @jcbh +''''
    EXEC(@SQL)
    IF @@ERROR <> 0
    goto ERRHandle
    commit transaction
    return
    ERRHandle:
    set @Return='SAVEFALSE' ----代表正常返回
    rollback transaction
    return
    GO这是整个存储过程
      

  6.   

    DECLARE @Tmp varchar(300)set @Tmp=''
    set @Tmp=@Tmp+ 'select ' + @Item + ' from tbGemColor_t where jcbh=''' + @jcbh + ''''
    print @Tmp
    EXEC(@Tmp)
    set @Return=@Tmp
      

  7.   

    set @SQL='select'+ @Tmp+' =' + @Item + ' from tbGemColor_t where jcbh=''' + @jcbh + ''''
    print @SQL
    EXEC(@SQL)
    执行发生的错误!服务器: 消息 214,级别 16,状态 2,过程 sp_executesql,行 20
    过程需要参数 '@statement' 为 'ntext/nchar/nvarchar' 类型。
      

  8.   

    有人看到到了服务器: 消息 214,级别 16,状态 2,过程 sp_executesql,行 20
    过程需要参数 '@statement' 为 'ntext/nchar/nvarchar' 类型。吗?
      

  9.   

    解决了!请
    zlp321002(一江春水向东流) ( )mschen(发光的星星) ( )两位到
    http://community.csdn.net/Expert/topic/4446/4446443.xml?temp=.6398432
    那里再回一次,
    那边也还有三十分
    平分给两位