从带有SQL参数的函数返回表

时间:2013-07-31 07:22:26

标签: sql sql-server

据我所知,我们可以通过db函数返回一个表:

CREATE FUNCTION MyFunction(@Value varchar(100))
RETURNS table
AS RETURN (select * from MyTable where ColumnName = '@Value')

在这个例子中,我们可以将列名作为函数的参数。我的问题是,我们可以将列名和表名写为函数的参数吗?因此我们可以写一个更通用的函数,如:

CREATE FUNCTION MyGenericSearchFunction(@TableName varchar(100), @ColumnName varchar(100), @Value varchar(100))
RETURNS table
AS RETURN (select * from @TableName where @ColumnName = '@Value')

1 个答案:

答案 0 :(得分:3)

不,你不能。

这将是一个动态查询。 对于SQL Server中的动态查询,必须使用exec()或sp_executesql()函数,这些函数在函数中是不允许的。