【发布时间】:2008-12-08 16:30:36
【问题描述】:
在我正在移植到 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 服务器可能是我试图从表变量中选择的东西。
编辑时:是的,我不需要在函数中执行此操作,我可以运行存储过程,我之前没有编写过任何一个。
【问题讨论】:
标签: sql sql-server user-defined-functions