我具有以下用户定义的功能:
CREATE FUNCTION dbo.GetConcatenatedWithKeyAsInt32(@Values dbo.IndexValue READONLY)
RETURNS TABLE
WITH SCHEMABINDING
AS
RETURN (
SELECT
[Id],
-- The definition of [Names] is not really important to this question!
[Names] = stuff((
select ', ' + Value
from @Values AS xt
where xt.Id = t.Id
for xml path(''), TYPE
).value('.[1]','varchar(max)'), 1, 2, '')
FROM @Values AS t GROUP BY t.Id);
该参数是用户定义的表类型:
CREATE TYPE IndexValue AS TABLE ( Id int, Value VARCHAR(max) );
我正在努力调用此函数。
我发现了一些例子,人们可以在实际的物理表(或视图)上调用此函数,但是可以肯定的是,可以直接在选择表达式中使用它,不是吗?
我尝试过:
SELECT *
FROM dbo.GetConcatenatedWithKeyAsInt32(
SELECT c.Id AS Id, a.City AS value
FROM Customers c
JOIN Addresses a ON c.Id = a.CustomerId
);
SQL Server不喜欢这样:
Incorrect syntax near the keyword 'SELECT'.
Incorrect syntax near ')'
这可能吗?如果是这样,正确的语法是什么?
或者我真的需要为它创建一个临时表或视图吗?>
SELECT c.Id AS Id, a.City AS value FROM Customers c JOIN Addresses a ON c.Id = a.CustomerId
第一?
我有以下用户定义的函数:CREATE FUNCTION dbo.GetConcatenatedWithKeyAsInt32(@Values dbo.IndexValue READONLY)以SCHEMABINDING AS RETURN(SELECT [Id],-...
no