我正在尝试运行以下代码,但收到 ORA-00933 错误:
<code> --CODE B
select distinct po_details.po_id,
po_details.po_det_id,
po_details.change_order,
po_details.start_date,
po_details.end_date,
po_details.po_det_amt,
po_details.scope,
po_details.name,
po_details.po_status,
po_details.wbs
from po_details,wbs,project
where po_details.po_id = :P230_PO_ID
and po_details.wbs = wbs.wbs_number_id
and wbs.po_number_id = :P230_PO_NUMBER
and substr(wbs.wbs_number_id,1,6) = project.wbs_Sequence
and project.project_number = nvl(substr(:F101_FPC_NUMBER,1,10),project.project_number))
</code>
我没有看到我的 SQL 语句在哪里出错。
此 SQL 语句 (CODE B) 试图简化 APEX 应用程序的代码,该应用程序仅在我在自定义验证后尝试刷新屏幕时才出现另一条错误消息。很烦人。最初的 SQL 语句 (CODE A) 如下所示:
<code> --CODE A
select po_details.po_id,
po_details.po_det_id,
po_details.change_order,
po_details.start_date,
po_details.end_date,
po_details.po_det_amt,
po_details.scope,
po_details.name,
po_details.po_status,
po_details.wbs
from PO_DETAILS
where po_details.po_id = :P230_PO_ID
and po_details.wbs in (select distinct wbs.wbs_number_id
from wbs, project
where wbs.po_number_id = :P230_PO_NUMBER
and substr(wbs.wbs_number_id,1,6) = project.wbs_sequence
and project.project_number = nvl(substr(:F101_FPC_NUMBER,1,10),project.project_number))
order by po_details.change_order
</code>
我在 APEX 中收到此 CODE A sql 语句的错误消息是这样的:
report error:
ORA-01445: cannot select ROWID from, or sample, a join view without a key-preserved table
ORA-06510: PL/SQL: unhandled user-defined exception
...人们告诉我,如果我使用视图(在创建视图之前使用 CODE B 涂鸦),它将解决此刷新错误输出问题。什么?所有这些篮球只是为了刷新?如果我能找出 ORA-00933 错误消息,我也许可以继续。看来我是在追逐彩虹而不是到达任何地方。有什么建议么?谢谢!