在sql server中使用表名作为参数的函数
我想在SQLServer2008中编写一个函数,该函数可以将表名作为变量 例如:在sql server中使用表名作为参数的函数,sql,sql-server,sql-server-2008,function,Sql,Sql Server,Sql Server 2008,Function,我想在SQLServer2008中编写一个函数,该函数可以将表名作为变量 例如: 可以从变量执行SQL语句: 在功能上: DECLARE @var AS VARCHAR(500) SET @var = 'SELECT * FROM ' + @tbl EXECUTE (@var) 您需要查看动态SQL,但是不能在函数内部使用动态SQL。您希望函数做什么?为什么有结构完全相同的表?(您的示例有select*,这意味着列都是相同的。)由于这只能在所有表都具有相同形状(从函数返回的列的数量、名称和类型
可以从变量执行SQL语句: 在功能上:
DECLARE @var AS VARCHAR(500)
SET @var = 'SELECT * FROM ' + @tbl
EXECUTE (@var)
您需要查看动态SQL,但是不能在函数内部使用动态SQL。您希望函数做什么?为什么有结构完全相同的表?(您的示例有
select*
,这意味着列都是相同的。)由于这只能在所有表都具有相同形状(从函数返回的列的数量、名称和类型必须固定)的情况下起作用,因此这类表的数量可能有限。在这种情况下,您可以使用大量的UNION ALL
结构和每个结构上的WHERE
子句来测试@tbl
,以确保只有一个SELECT
返回任何行。此外,表名通常应声明为sysname
,而不是varchar(50)
。不能在函数内调用EXECUTE
。
DECLARE @var AS VARCHAR(500)
SET @var = 'SELECT * FROM ' + @tbl
EXECUTE (@var)