在select语句中使用Table值函数返回值

时间:2014-02-13 14:47:37

标签: sql sql-server

我有一个表值函数,它返回2列和1行。我想在select语句中使用这些值。请帮我从表格中获取价值。

修改(来自OP的评论)

类似

select a,b (select c1 from MyTableFunction(Param1, Param2)) as c, 
           (select c2 from MyTableFunction(Param1, Param2)) as d 
from main_table

2 个答案:

答案 0 :(得分:1)

如果是Sql Server,这很简单:

SELECT Col1, Col2 
FROM Schema.MyTableFunction(Param1, Param2);

修改

如果传递给Function的参数是常量/独立于其他连接表,则可以使用CROSS JOIN对其进行别名,并使用结果列。

SELECT a,b, X.Col1 as c, X.Col2 as d 
FROM main_table mt
 CROSS JOIN MyTableFunction(123, 'SomeConstant') AS X;

但是,如果您需要在连接期间将表中的列传入表值函数,则需要使用CROSS APPLY

SELECT a,b, X.Col1 as c, X.Col2 as d 
FROM main_table mt
 CROSS APPLY MyTableFunction(mt.Col1, mt.Col2) AS X;

答案 1 :(得分:0)

在SQL Server中只需将函数名称放在from中。所以:

select column1
,      column2
from   dbo.udFunctionName('xyz')

在Oracle中使用:

select column1
,      column2
from   table(functionName('xyz'))