Sql server TSQL:在函数中使用带tablename的参数
正在使用SQL Server 2014 我正在尝试将此代码转换为在函数中使用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来自参数,如何从表中获取数据?无法做到这
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=”查询将给出的reusltExec在函数中是不允许的。我明白了。尝试在存储过程中转换函数。整个想法是我不知道表名。但我的答案是没有办法。这是真的。请解开-down@Tanner没有重复,我的问题是关于函数中的动态。好的,我收回了,使用函数而不是存储过程的原因是什么?这是一个类似的问题:@Tanner我需要在单个存储过程中多次运行函数,因此,为了尽量减少代码量,我想使用函数。@Tanner您提到的类似问题是针对SQL Server 2005的,此后肯定发生了很多事情。