You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Informix IDS 12.x中如何将关联表字段值作为自定义函数的入参

解决方案

方案1:使用LATERAL关键字(推荐,适用于IDS 12.10.xC10及更高版本)

这是官方提供的专门用于解决关联表字段传入表函数场景的语法,无需修改你现有的函数逻辑,仅需在原查询的table()表达式前添加LATERAL关键字即可:

select * from tab1
join lateral table( function myfunc( tab1.c1 ) ) as myfunctab2( c2 ) 
  on myfunctab2.c2 = tab1.c2;

LATERAL会改变查询执行顺序,让右侧的表函数针对左表tab1的每一行单独计算,因此可以正常拿到对应行的c1字段值作为入参。


方案2:使用APPLY语法(兼容12.10.xC10以下的12.x版本)

如果你的数据库版本不支持LATERAL,可以使用Informix支持的CROSS APPLY语法,效果和带LATERAL的内连接完全一致:

select * from tab1
cross apply table( function myfunc( tab1.c1 ) ) as myfunctab2( c2 )
where myfunctab2.c2 = tab1.c2;

如果需要保留tab1中没有匹配函数结果的行,可以把CROSS APPLY换成OUTER APPLY。


极低版本兼容方案(无LATERAL/APPLY支持时使用)

如果你的版本连APPLY语法都不支持,可以通过存储过程逐行处理实现需求:

  1. 创建临时表存储结果
  2. 定义游标遍历tab1的每一行,取c1值调用myfunc,将返回结果插入临时表
  3. 最后查询临时表得到所需结果
    该方案性能较差,仅适合数据量较小的场景。

内容的提问来源于stack exchange,提问作者Herwig

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 10:45:03