如何连接到在SQL中动态接受输入的存储过程

时间:2017-01-20 15:52:17

标签: sql oracle stored-procedures

我有一个存储过程接受整数作为输入,并生成包含var1作为输出之一的输出。我试图将xyz_table加入此存储过程的输出。但问题是我需要在调用此存储过程之前提供整数值,以便我可以动态地连接到结果集。

查询看起来像这样。

SELECT * 
FROM xyz_table t1
LEFT OUTER JOIN Call_Date_Rate_Proc(t1.idx) ON var1 = t1.idx
WHERE t1.idx IN (12100,78218)

但每当我运行此操作时,我都会收到错误

  

列idx无效

不知怎的,它无法识别这个变量。

1 个答案:

答案 0 :(得分:1)

如果Call_Date_Rate_Proc(var1)是一个表函数(流水线或非流水线),并且您使用的是Oracle 12c,则可以使用CROSS APPLYOUTER APPLYLATERAL联接功能:< / p>

select *
  from xyz_table t1
 OUTER APPLY (select * from TABLE(Call_Date_Rate_Proc(t1.idx))) t2
 where t1.idx in (12100,78218);