我犯了一个奇怪的错误..ORA-00933:APEX SQL语句的SQL命令未正确结束



我正在尝试运行以下代码,但我得到了一个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语句(CODEB)是为了简化APEX应用程序的代码,该应用程序只有在我尝试在自定义验证后刷新屏幕时才会出现另一条错误消息。很烦人。最初的SQL语句(代码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 scrible),它将修复这个刷新错误。什么这些篮球只是为了提神?如果我能弄清楚ORA-00933错误消息,我可能能够继续。我似乎在追逐彩虹,而不是去任何地方。有什么建议吗?谢谢

对于ORA-00933,最后一行有一个额外的括号:

and project.project_number = nvl(substr(:F101_FPC_NUMBER,1,10),project.project_number))

应该是:

and project.project_number = nvl(substr(:F101_FPC_NUMBER,1,10),project.project_number)

您的"代码A"块似乎与"代码B"相同,并且还具有相同的额外括号。我不明白即使没有它,这怎么会产生你所显示的错误,所以我认为你可能在那里粘贴了错误的代码?

最新更新