ORA-01008 Oracle Apex 应用程序上并非所有变量都绑定错误

问题描述 投票:0回答:1

我正在尝试在 Oracle APEX 应用程序中创建 PDF。为此,我使用 ireport 5.6.0 版本并创建 xml 代码,然后使用我在网上找到的 jrxml2pdf 应用程序在我的 apex 应用程序中将 xml 代码转换为 pdf。很多次我都成功地用这种方法创建了 pdf 并将其显示在我的应用程序中。问题是,当我尝试在 pdf 上放置饼图时,出现错误,提示 ORA-01008 并非所有变量均已绑定。但我的代码在蟾蜍上运行良好,在 ireport 的预览屏幕上也运行良好(我可以看到饼图并且值是正确的)。但是之后我将这个xml代码添加到jrxml2pdf并尝试查看我在ireport中看到的pdf,出现这个错误

这是我的 sql 查询代码。当我输入值而不是参数时,pdf 也可以在 apex 上运行。所以问题出在变量上而不是我使用的应用程序上。什么可能导致此错误?

SELECT 'OK' AS Results, a.OK AS Quantity
  FROM (SELECT SUM (DECODE (dt.f_status, 'OK', 1, 0)) AS OK
          FROM KT_QMS_HEADERS_V  he,
               (SELECT dt.f_header_id,
                       dt.f_model_id,
                       dt.seq_id,
                       NVL (dtt.f_status, 'NOK') f_status
                  FROM KT_QMS_DETAILS_V  dt,
                       (SELECT *
                          FROM KT_QMS_DETECT_V
                         WHERE f_hullno = $P{P3_HULLNO}
AND f_order=1
                    ) dtt
                WHERE
                    dt.f_model_id = $P{P3_MODEL}
                    AND dt.seq_id = dtt.f_detail_id(+)
            ) dt
        WHERE
            he.f_model_id = $P{P3_MODEL}
            AND dt.f_model_id(+) = he.f_model_id
            AND dt.f_header_id(+) = he.seq_id
    ) a
UNION ALL
SELECT 'NOK' AS Results, b.NOK AS Quantity
  FROM (SELECT SUM (DECODE (dt.f_status, 'NOK', 1, 0)) AS NOK
          FROM KT_QMS_HEADERS_V  he,
               (SELECT dt.f_header_id,
                       dt.f_model_id,
                       dt.seq_id,
                       NVL (dtt.f_status, 'NOK') f_status
                  FROM KT_QMS_DETAILS_V  dt,
                       (SELECT *
                          FROM KT_QMS_DETECT_V
                         WHERE f_hullno = $P{P3_HULLNO}
AND f_order=1
                    ) dtt
                WHERE
                    dt.f_model_id = $P{P3_MODEL}
                    AND dt.seq_id = dtt.f_detail_id(+)
            ) dt
        WHERE
            he.f_model_id = $P{P3_MODEL}
            AND dt.f_model_id(+) = he.f_model_id
            AND dt.f_header_id(+) = he.seq_id
    ) b
sql oracle oracle-apex ireport ora-01008
1个回答
0
投票

如果一个应用程序使用命名绑定变量,那么您只需提供

$P{P3_MODEL}
$P{P3_HULLNO}
两个值,并且将为与这些名称匹配的所有变量提供这些值。

如果另一个应用程序正在使用位置绑定变量,那么您需要为绑定变量的每个实例提供一个值,如果绑定变量重复,那么您需要提供这些值的重复项(按照它们在查询中出现的顺序) .

或者,重写您的查询以使其更简单,以便每个绑定变量仅出现一次。

我认为这与您的查询相同(但您没有提供任何示例数据,因此未经测试):

SELECT SUM(DECODE(COALESCE(dtt.f_status, 'NOK'), 'OK', 1, 0)) AS OK,
       SUM(DECODE(COALESCE(dtt.f_status, 'NOK'), 'NOK', 1, 0)) AS NOK
FROM   KT_QMS_HEADERS_V  he
       LEFT OUTER JOIN KT_QMS_DETAILS_V  dt
       ON (
              dt.f_model_id  = he.f_model_id
          AND dt.f_header_id = he.seq_id
          )
       LEFT OUTER JOIN JOIN KT_QMS_DETECT_V ddt
       ON (   ddt.f_hullno = $P{P3_HULLNO}
          AND ddt.f_order  = 1
          AND dt.seq_id    = dtt.f_detail_id
          )
WHERE   he.f_model_id = $P{P3_MODEL}
© www.soinside.com 2019 - 2024. All rights reserved.