Sql server TSQL:在函数中使用带tablename的参数

Sql server TSQL:在函数中使用带tablename的参数,sql-server,tsql,sql-function,sql-server-2014,Sql Server,Tsql,Sql Function,Sql Server 2014,正在使用SQL Server 2014 我正在尝试将此代码转换为在函数中使用 SET @sqlCommand = N'SELECT @text = ' + @fieldname + ' FROM ' + @tablename +' WHERE ID=''' + CONVERT(NVARCHAR(200), @ID) + '''' EXECUTE sp_executesql... …但函数不接受sp_executesql 在函数中,如果tablename来自参数,如何从表中获取数据?无法做到这

正在使用SQL Server 2014

我正在尝试将此代码转换为在函数中使用

SET @sqlCommand = N'SELECT @text = ' + @fieldname + ' FROM ' + @tablename +' WHERE ID=''' + CONVERT(NVARCHAR(200), @ID)  + ''''
EXECUTE sp_executesql...
…但函数不接受sp_executesql

在函数中,如果
tablename
来自参数,如何从表中获取数据?

无法做到这一点。 如果需要,您可以使用一些选项,例如:

case when @TableName = 'X' then
   ...
when @TableName = 'Y' then
   ...
else
   ...
试试这个:

SET @sqlCommand = N'SELECT ' + @fieldname + ' FROM ' + @tablename +' WHERE ID=''' +   CONVERT(NVARCHAR(200), @ID)  + ''''
EXEC (@sqlCommand)

我删除了“@text=”查询将给出的reuslt

Exec在函数中是不允许的。我明白了。尝试在存储过程中转换函数。整个想法是我不知道表名。但我的答案是没有办法。这是真的。请解开-down@Tanner没有重复,我的问题是关于函数中的动态。好的,我收回了,使用函数而不是存储过程的原因是什么?这是一个类似的问题:@Tanner我需要在单个存储过程中多次运行函数,因此,为了尽量减少代码量,我想使用函数。@Tanner您提到的类似问题是针对SQL Server 2005的,此后肯定发生了很多事情。