我有一个表值函数,它返回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
答案 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'))