set @sql = 'select top 1 ' + @ID + ' ID from ' + @Table_Name + ' order by newid()'--这样是构造一个字符串,不是把@id做为变量放入字符串中,所以还会出现数据类型转换错误

解决方案 »

  1.   

    To lsxaa(小李铅笔刀)可以说得详细一些么,能在我的基础上写个完整的么,多谢了
      

  2.   

    declare @ID int
    declare @sql Nvarchar(4000)  --改类型
    declare @Table_Name varchar(8000)set @Table_Name = 'T_Time_All_Test'--改处理语句
    set @sql = 'select top 1  @ID=ID from ' + @Table_Name + ' order by newid()'
    print @sql
    exec  sp_executesql @sql,N' @ID int out',@id out  --改用动态参数传递
    print @ID
      

  3.   

    sp_executesql 的语法参考sql联机帮助
      

  4.   

    To zjcxc(邹建) set @sql = 'select top 1 ' + @ID + ' ID from ' + @Table_Name + ' order by newid()'--这样是构造一个字符串,不是把@id做为变量放入字符串中,所以还会出现数据类型转换错误那我要该如何写呢,找了好些资料了,实在是不知要该如何写了,能帮个忙么,多谢了