【问题标题】:use Table valued function return value in select statement在 select 语句中使用表值函数返回值
【发布时间】:2014-03-12 12:29:58
【问题描述】:

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

编辑(来自 OP 的 cmets)

类似

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

【问题讨论】:

  • 发布你已经拥有的东西。另外,您使用的是什么平台?

标签: sql sql-server


【解决方案1】:

如果是Sql Server,那么简单如下:

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

编辑

如果传递给函数的参数是常量/独立于其他连接表,您可以对其使用 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;

【讨论】:

  • 我需要在另一个选择查询中使用,比如 select a,b (select c1 from MyTableFunction(Param1, Param2)) as c, (select c2 from MyTableFunction(Param1, Param2)) as d从主表
  • 我需要在另一个选择查询中使用它,例如 select a,b (select c1 from MyTableFunction(Param1, Param2)) as c, (select c2 from MyTableFunction(Param1, Param2)) as d 来自 main_table
  • @Rajakrishnan:我们仍然不知道你的数据库平台。
【解决方案2】:

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

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

在 Oracle 中使用:

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

【讨论】:

  • I SQL 查询。我需要在另一个选择查询中使用它,例如 select a,b (select c1 from MyTableFunction(Param1, Param2)) as c, (select c2 from MyTableFunction(Param1, Param2)) as d from main_table
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-11-02
  • 1970-01-01
  • 1970-01-01
  • 2012-05-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多