当表名作为参数发送到ms sql函数时,如何从表中选择记录

时间:2011-11-22 09:19:21

标签: sql sql-server-2008

我想要一个函数,它会返回特定表中的所有记录。 函数的输入参数是表名。

任何人都可以帮助我吗?

2 个答案:

答案 0 :(得分:4)

您需要动态构建查询。有关详细信息,请查看The Curse and Blessings of Dynamic SQL

declare @TableName sysname = 'TableName'
declare @sql nvarchar(max) = 'select * from '+quotename(@TableName)
exec (@sql)

作为存储过程,它看起来像这样:

create procedure GetAll
  @TableName sysname
as

declare @sql nvarchar(max) = 'select * from '+quotename(@TableName)
exec (@sql)

正如Rashmi Kant Shrivastwa在注释中指出的那样,您不能在用户定义的函数中使用动态SQL。

答案 1 :(得分:1)

你不能在函数内部使用动态sql查询。为了你想要的结果,你可以帮助 sql-CLR功能

您可以查看this linkthis one它可能会对您有所帮助