在我正在移植到 Web 的应用程序中,我们目前在运行时根据指定的“模板”字符串在运行时动态访问不同的表。既然我们正在迁移到 SQL 服务器,我想将执行此操作的负担移回数据库,因此我不必弄乱动态 GridView。我想编写一个表值 UDF,其中一个参数用于表名,一个用于查询 WHERE 子句。
我为我的 UDF 输入了以下内容,但显然它不起作用。有没有办法获取某种类型的 varchar 或字符串并获得可以在 FROM 子句中工作的表引用?
CREATE FUNCTION TemplateSelector
(
@template varchar(40),
@code varchar(80)
)
RETURNS TABLE
AS
RETURN
(
SELECT * FROM @template WHERE ProductionCode = @code
)
或获得与此概念类似的结果集的其他方式。基本上表中的所有记录都由 varchar @template 与 @code 的匹配 ProductionCode 指示。
我收到错误“必须声明表变量“@template””,因此 SQL 服务器可能是我试图从表变量中选择的东西。
编辑时:是的,我不需要在函数中执行此操作,我可以运行存储过程,我只是之前没有编写过它们中的任何一个。