--proc DECLARE @dt  NVARCHAR(50)
SELECT @dt=MainRoom_ET  FROM Fhome f WHERE f.UserId=3
PRINT @dt
--这样可以得到@dt
--
--如果MainRoom_ET为变量时
--DECLARE @dt  NVARCHAR(50)
DECLARE @table_ET NVARCHAR(50)
DECLARE @str2 NVARCHAR(200)
SET @table_ET='MainRoom_ET';
SET @str2='SELECT '''+@dt+'''='+CONVERT(NVARCHAR(50), @table_ET) +' FROM Fhome f WHERE f.UserId=3'
EXEC(@str2)
PRINT @dt
--或
DECLARE @dt  NVARCHAR(50)
DECLARE @table_ET NVARCHAR(50)
DECLARE @str2 NVARCHAR(200)
SET @table_ET='MainRoom_ET';
SELECT @dt=CONVERT(NVARCHAR(50), @table_ET)  FROM Fhome f WHERE f.UserId=3
PRINT @dt
--都得不到 @dt 的值?--当MainRoom_ET 字段名为传递过来的变量时怎么把字段里的值放入@dt变量?
--自定义函数  和output 参数 也考虑过啦 

解决方案 »

  1.   

    EXEC(@str2)之前print一下你的语句,看看是怎么样的不就知道了?
      

  2.   

    SET @str2='SELECT '+@dt+'='+CONVERT(NVARCHAR(50), @table_ET) +' FROM Fhome f WHERE f.UserId=3'
    第一句这样试试吧。
      

  3.   

    DECLARE @dt  NVARCHAR(50)
    DECLARE @table_ET NVARCHAR(50)
    DECLARE @str2 NVARCHAR(200)
    SET @table_ET='MainRoom_ET';
    SET @str2='SELECT '''+@dt+'''='+CONVERT(NVARCHAR(50), @table_ET) +' FROM Fhome f WHERE f.UserId=3'
    EXEC(@str2)
    PRINT @str2
    输出‘’@dt 没赋初值
    所以语句不能=‘’因为
      

  4.   

    --自定义函数 和output 参数 也考虑过啦   
    好像都做不到
      

  5.   

     DECLARE @dt NVARCHAR(50)
    DECLARE @table_ET NVARCHAR(50)
    DECLARE @str2 NVARCHAR(200)
    SET @table_ET='MainRoom_ET';
    SET @str2='SELECT @dt=CONVERT(NVARCHAR(50), @table_ET)  FROM Fhome f WHERE f.UserId=3'
     exec sp_executesql @str2,N'@dt NVARCHAR(50) output',@dt outputPRINT @str2
      

  6.   

    'SELECT @dt=CONVERT(NVARCHAR(50), @table_ET) FROM Fhome f WHERE f.UserId=3'肯定是错的
      

  7.   


    declare @SQLString nvarchar(200)
    DECLARE @table_ET NVARCHAR(50)
    DECLARE @str2 NVARCHAR(200)
    SET @table_ET='MainRoom_ET';declare @ParmDefinition nvarchar(200)
    SET @str2 =
         N'SELECT @dt='+@table_ET+' FROM Fhome f WHERE f.UserId=3'
    SET @ParmDefinition = N'@dt NVARCHAR(50) output';
    DECLARE @dt NVARCHAR(50);
    EXECUTE sp_executesql @str2, @ParmDefinition   ,@dt   OUTPUT
    SELECT @dt这个可以