如何将类似参数的子查询发送到 SQL 过程中?
How to send a subquery like parameter into a SQL procedure?
我有一个 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');
为了避免进行过多的数据库调用,但我得到
Statement failed, SQLSTATE = 21000
multiple rows in singleton select
有什么办法吗?
您可以加入您的子查询(或在本例中为:table)和存储过程以获得所需的效果。
select sum(COMPRA_IMPORTE)
from PROVEEDORES p
left join ORSP_CM_COMPRAS_PROV(p.PROVEEDOR_ID, '2019-01-01', '2019-12-31', 'B', 'P', 'N') on 1 = 1
请注意,我使用的是 left join
,但它在加入存储过程时的实际效果类似于例如 Microsoft SQL 服务器调用 OUTER APPLY
.
我有一个 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');
为了避免进行过多的数据库调用,但我得到
Statement failed, SQLSTATE = 21000 multiple rows in singleton select
有什么办法吗?
您可以加入您的子查询(或在本例中为:table)和存储过程以获得所需的效果。
select sum(COMPRA_IMPORTE)
from PROVEEDORES p
left join ORSP_CM_COMPRAS_PROV(p.PROVEEDOR_ID, '2019-01-01', '2019-12-31', 'B', 'P', 'N') on 1 = 1
请注意,我使用的是 left join
,但它在加入存储过程时的实际效果类似于例如 Microsoft SQL 服务器调用 OUTER APPLY
.