8
我打過電話的在線TVF與位置參數,它工作正常:使用命名參數調用串聯TVF,什麼是正確的語法?
SELECT MyTable.Col1,
(SELECT TvfColumn FROM ufnGetData(MyTable.Col1, MyTable.Col2)),
MyTable.Col2
FROM MyTable
然後我試圖命名參數的TVF,它不解析:
SELECT MyTable.Col1,
(SELECT TvfColumn FROM ufnGetData(@Param1=MyTable.Col1, @Param2=MyTable.Col2)),
MyTable.Col2
FROM MyTable
功能看起來是這樣的:
CREATE FUNCTION dbo.ufnGetData
(
@Param1 INT,
@Param2 INT
)
RETURNS TABLE
AS
RETURN
(
SELECT
blah blah blah AS TvfColumn
)
GO
給了一個錯誤類似於:
消息137,級別15,狀態2,行23必須聲明標量變量 「@Param2」。
消息102,級別15,狀態1,行24''附近語法不正確。
我在做什麼錯?
真正的好處是我可以在不影響呼叫者的情況下更改TVF中的參數順序。看到參數是什麼,如果它們被命名也很容易,儘管我可以通過良好的內聯註釋獲得相同的效果。 –
@MichaelGoldshteyn對不起,SQL Server不可能。 – 2011-11-21 22:15:35
RE:「或任何功能」。這不是真的。在這種情況下,可以使用'EXEC'調用標量UDF並接受命名參數。 –