如何在 Oracle Forms 中删除 SQL 查询中的 ORDER BY

How remove ORDER BY in SQL query in Oracle Forms

我有一个 SQL 查询,它是在特定条件下生成的,当 F7/F8 时。生成的 SQL 查询通过 LAST_QUERY.

插入块 "Block1"

LAST_QUERY 我的 returns SQL 查询:

SELECT column1, column2, column3, sloupec4, sloupec5, sloupec6
FROM table
WHERE column1 = 12
AND column2 = 'test'
ORDER BY column1, column3 desc, column 5;

如果 SQL 来自 LAST_QUERY 的查询,我将块通过

v_where =: System.Last_Query;
set_block_property('BLOCK1' default_where, v_where);

执行此操作后,显示错误并且 SQL 查询如下所示:

SELECT column1, column2, column3, sloupec4, sloupec5, sloupec6
FROM table
WHERE column1 = 12
AND column2 = 'test'
ORDER BY column1, column3 desc, column 5 ORDER BY column1, column3 desc, column 5;

如何删除 ORDER BY 后面的所有内容,包括 ORDER BY? 有一些 SQL 函数可以删除 SQL 查询中的最后几个字符?

ORDER BY 我在块 "BLOCK1" 上,我无法删除它,它必须留在那里。

感谢您的建议。

从您的 v_where 变量中删除 order by 子句:

v_where := :SYSTEM.LAST_QUERY;
if instr(v_where, 'ORDER BY') > 0 then
  v_where := substr(v_where, 1, instr(v_where, 'ORDER BY')-1);
end if;