【发布时间】:2022-07-26 23:33:57
【问题描述】:
我正在尝试建立一个具有多个参数的函数,如下所示@SITENAME、@MARKET 和@DATE。
ALTER FUNCTION [dbo].[Platform_Parser]
(
@SITENAME NVARCHAR(2000) NULL
,@MARKET NVARCHAR(2000) NULL
,@DATE Date NULL
)
RETURNS NVARCHAR(2000)
AS
BEGIN
RETURN
CASE
WHEN @SITENAME LIKE '%GOOGLE%' AND @DATE < '2022-01-01' AND @MARKET IN ('FR','DE') THEN 'TWITTER'
WHEN @SITENAME LIKE '%GOOGLE%' AND @DATE < '2022-01-01' AND @MARKET = 'UK' THEN 'YOUTUBE'
ELSE 'Unclassified'
END
END
GO
我希望我需要使用表值参数,但是我需要将函数放置在引用视图引用自身的几个不同表中,因此不完全确定如何执行此操作。
我目前如何在视图中实现的一个示例是
[dbo].[Platform_Parser]([SiteName],[Market],[Date])
但可以想象它需要更改为下面的新参数是一个表格。
[dbo].[Platform_Parser]([SiteName],[Market],[Date],[dbo].[ThisTable])
【问题讨论】:
-
如果您不使用 SQL Server 2019,我建议您不要使用多行标量函数。至于表类型参数,您可以将它们用于函数,但我怀疑这是您想要的方式;您没有将 表名 传递给它,您需要在
INSERT的行中定义适当的用户定义表TYPE的变量。您实际上想在这里实现什么;我怀疑你在这里问的是XY Problem。 -
谢谢@Larnu,最初我有一个工作函数,它使用“@SITENAME”的单数参数确定平台,但随后必须使用“日期”和“市场”进一步参数来确定这些平台以及 SITENAME。这是我的主要问题
-
这并不能真正解释您想要解决的实际问题。特别是当您想将表类型参数传递给函数时,该函数甚至没有
FROM,因此表类型不适合当前设计。您需要详细说明您要解决的问题。提供样本数据(以消费格式)和预期结果。
标签: sql sql-server function table-valued-parameters