我有一个奇怪的错误…ORA-00933:APEX SQL语句的SQL命令没有正确结束

我有一个奇怪的错误…ORA-00933:APEX SQL语句的SQL命令没有正确结束,sql,oracle11g,oracle-apex,page-refresh,ora-00933,Sql,Oracle11g,Oracle Apex,Page Refresh,Ora 00933,我正在尝试运行以下代码,但出现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_sta

我正在尝试运行以下代码,但出现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语句(代码B)试图简化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中收到的代码sql语句的错误消息如下:

报告错误:
ORA-01445:无法从没有键保留表的联接视图或示例中选择ROWID
ORA-06510:PL/SQL:未处理的用户定义异常

…人们告诉我,如果我使用视图(在创建视图之前使用代码B scribble),它将修复此刷新错误。什么?所有这些篮球只是为了刷新一下?如果我能找出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”相同,并且具有相同的额外括号。我不知道如果没有它,怎么会产生你显示的错误,所以我认为你可能粘贴了错误的代码?

我不敢相信我复制了相同的代码!啊!我已经用正确的代码更新了我的问题。谢谢你的观察。所以我发现了最初的问题是什么。我的主详细信息页的详细信息部分的SQL语句似乎有一个导致ORA-01445错误的“order by”子句。一旦我拿出“订单依据”条款,一切都正常了!我的刷新现在成功了!