Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在sql server中使用表名作为参数的函数_Sql_Sql Server_Sql Server 2008_Function - Fatal编程技术网

在sql server中使用表名作为参数的函数

在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*,这意味着列都是相同的。)由于这只能在所有表都具有相同形状(从函数返回的列的数量、名称和类型

我想在SQLServer2008中编写一个函数,该函数可以将表名作为变量

例如:


可以从变量执行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)