sql-server-2008 – 使用命名参数调用内联TVF,正确的语法是什么
发布时间:2020-12-12 16:20:21 所属栏目:MsSql教程 来源:网络整理
导读:我尝试使用位置参数调用内联TVF并且工作正常: SELECT MyTable.Col1,(SELECT TvfColumn FROM ufnGetData(MyTable.Col1,MyTable.Col2)),MyTable.Col2FROM MyTable 然后我尝试将参数命名为TVF并且它不解析: SELECT MyTable.Col1,(SELECT TvfColumn FROM ufnGet
我尝试使用位置参数调用内联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 给出类似于的错误:
我究竟做错了什么? 解决方法表值用户定义函数不能被视为存储过程.调用它们时不使用命名参数,它是基于位置的.换句话说,你想做的事情是不可能的.你有没有想要使用命名参数的原因?您需要定义所有参数,因此通常无法通过存储过程看到这些参数. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |