【问题标题】:How to execute table valued function in SQL Server如何在 SQL Server 中执行表值函数
【发布时间】:2017-03-14 09:14:03
【问题描述】:

我在尝试执行表值函数时遇到语法错误。

select * from fn_security(select R.rk from dbo.LINK R)

错误:

Msg 156, Level 15, State 1, Line 1
Incorrect syntax near the keyword 'select'.
Msg 102, Level 15, State 1, Line 1
Incorrect syntax near ')'.

我做错了什么?如何执行?

【问题讨论】:

    标签: sql-server sql-server-2008


    【解决方案1】:

    你不能通过整个表,就像你现在正在尝试的方式一样。你可以使用交叉应用来获取所有

    你可以试试下面

    select * from dbo.LINK  r
    cross apply
    dbo. fn_security(r.rk)
    

    【讨论】:

    • 那么,这意味着如果“fn_security”有一个表而不是函数,“交叉应用”将给出相同的结果?也就是说,例如 select * from table_security(select R.rk from dbo.LINK R) 与 [在获取结果方面] select * from dbo.LINK r cross apply dbo 相同。 fn_security(r.rk)
    • You can't pass whole table - 用户定义的表类型呢? You can use cross apply - 外部应用呢?
    • 将交叉应用视为连接,但您可以引用主表列,因此如果您的连接产生多个结果,那么多个值
    • @TryingBest - 你是拥有LINK 表和table_security 函数的人。我们没有。您至少可以try 查询并查看它产生的结果。如果它没有产生您所期望的,那么我建议您编辑您的问题并包括示例数据和预期结果
    • @gotqn:我不确定,我完全理解what about outer apply? ,用户定义的表类型只能用于程序
    猜你喜欢
    • 2011-08-23
    • 2018-01-01
    • 1970-01-01
    • 2022-01-27
    • 2011-08-27
    • 2017-04-04
    • 2014-05-07
    • 2010-12-07
    • 1970-01-01
    相关资源
    最近更新 更多