SQL函数INPUT表在查询

时间:2018-02-07 13:57:42

标签: sql sql-server function sql-server-2016

对于MS SQL 2016

我有用户表'表TYPE t_Table(Id int,String nvarchar(max))'

我也有'f_get(@T t_Table)'函数

有一些代码...等效'STRING_AGG' - 由于SQL的版本,我无法使用此功能

当我使用类型t_Table ...

时,该函数工作正常
 DECLARE @T t_Table
 INSERT INTO @T
 SELECT 1, 'John' UNION
 SELECT 2, 'Mark'

 SELECT f_get(@T)...

但我想在QUERY

中使用此功能
 SELECT f_get(
 SELECT 1, 'John' UNION
 SELECT 2, 'Mark'
)

....但它不起作用

或在查询中

 SELECT * FROM orders o
 OUTER APLLY f_get(
 SELECT ID, Name as String FROM table t WHERE t.OrderId = o.OrderId 
  )

有什么办法可以这样做吗? 谢谢 大卫

1 个答案:

答案 0 :(得分:1)

不,你不可能做你想做的事。要将表传递给函数中的Table-Valued参数,必须将其传递给预期表类型的变量。您无法使用内联SELECT语句传递它。