我尝试使用位置参数调用内联TVF并且它工作正常:
SELECT MyTable.Col1,
(SELECT TvfColumn FROM ufnGetData(MyTable.Col1, MyTable.Col2)),
MyTable.Col2
FROM MyTable
Run Code Online (Sandbox Code Playgroud)
然后我尝试将参数命名为TVF并且它不解析:
SELECT MyTable.Col1,
(SELECT TvfColumn FROM ufnGetData(@Param1=MyTable.Col1, @Param2=MyTable.Col2)),
MyTable.Col2
FROM MyTable
Run Code Online (Sandbox Code Playgroud)
该函数看起来像:
CREATE FUNCTION dbo.ufnGetData
(
@Param1 INT,
@Param2 INT
)
RETURNS TABLE
AS
RETURN
(
SELECT
blah blah blah AS TvfColumn
)
GO
Run Code Online (Sandbox Code Playgroud)
给出类似于的错误:
消息137,级别15,状态2,行23必须声明标量变量"@Param2".
消息102,级别15,状态1,行24','附近的语法不正确.
我究竟做错了什么?