如何将类似子查询的参数发送到 SQL 过程中?

我有一个 firebird 数据库,我在其中调用一个程序来获取一些数据。这个过程需要一个 ID,所以我有两个 php 查询,一个给我所有的 ID,另一个调用这个过程。


$queryP ="SELECT PROVEEDOR_ID FROM PROVEEDORES";

...some code...

while ($RowQ = ibase_fetch_object ($QueryObject)) 

{   

    $queryCompras =SELECT SUM(IMPORTE) FROM ORSP_CM_COMPRAS_PROV($RowQ->PROVEEDOR_ID, '2019-01-01', '2019-12-31', 'B', 'P', 'N');

...some code...

我想做类似的事情


 SELECT SUM(COMPRA_IMPORTE) FROM ORSP_CM_COMPRAS_PROV((SELECT PROVEEDOR_ID FROM PROVEEDORES), '2019-01-01', '2019-12-31', 'B', 'P', 'N'); 

为了避免做太多的数据库调用,但我得到


语句失败,SQLSTATE = 21000 单例选择中的多行


有没有办法做到这一点?


梵蒂冈之花
浏览 72回答 1
1回答

临摹微笑

您可以加入您的子查询(或在本例中为:表)和存储过程以获得所需的效果。select sum(COMPRA_IMPORTE)from PROVEEDORES pleft join ORSP_CM_COMPRAS_PROV(p.PROVEEDOR_ID, '2019-01-01', '2019-12-31', 'B', 'P', 'N') on 1 = 1请注意,我使用的是left join,但它在加入存储过程时的实际效果类似于 Microsoft SQL Server 调用的OUTER APPLY.
打开App,查看更多内容
随时随地看视频慕课网APP