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
:
をようになります0メッセージ137、レベル15、状態2、行23スカラー変数 "@ Param2"を宣言する必要があります。
Msg 102、レベル15、状態1、行24 '、'の近くの構文が正しくありません。
私は間違っていますか?
実際のメリットは、発信者に影響を与えることなく、TVFでパラメータの順序を変更できることです。また、名前が付いている場合はパラメータが何であるかを見るのが簡単ですが、インラインコメントを置いて同様の効果を得ることができます。 –
@MichaelGoldshteyn申し訳ありませんが、SQL Serverでは不可能です。 –
RE: "または任意の関数"。本当じゃない。スカラーUDFは 'EXEC'で呼び出すことができ、その場合は名前付きパラメーターを受け入れます。 –