--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 参数 也考虑过啦
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 参数 也考虑过啦
declare @where nvarchar(200)
declare @column nvarchar(200)
set @where ='where f.a=1'
set @column ='a'
declare @ParmDefinition nvarchar(200)
SET @SQLString =
N'SELECT @ResultNUM='+@column+' from t1 f '+@where;
SET @ParmDefinition = N'@ResultNUM int output';
DECLARE @ResultNUM INT;
EXECUTE sp_executesql @SQLString, @ParmDefinition ,@ResultNUM output
SELECT @ResultNUM
DECLARE @dt NVARCHAR(50)
DECLARE @table_ET NVARCHAR(50)
DECLARE @str NVARCHAR(200)
SET @table_ET='MainRoom_ET';
set @str = N'select @dt= '+@table_ET+' FROM f WHERE f.UserId=3'
exec sp_executesql @str,N'@dt NVARCHAR output',@dt output
select @dt
PRINT @dt
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这个可以
DECLARE @table_ET NVARCHAR(50)
DECLARE @str2 NVARCHAR(200)
SET @table_ET='MainRoom_ET';
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 @dtPRINT @dt这样之后,
sql 就成了
SELECT @dt=CONVERT(NVARCHAR(50), 'MainRoom_ET') FROM Fhome f WHERE f.UserId=3