如何获取 oracle 表单使用 Enter-query 操作生成的默认数据块

How to Get datablock default where that oracle forms generate with Enter-query action

我正在使用 oracle forms 6i。

简单地说,我正在使用这些项目的数据库块:

Employees:    employee_id , job_id , department_id , manager_id

注意:employees 是数据块名称。

例如:当终端用户点击进入查询按钮,在department_id项中写入50,然后点击执行查询按钮;数据块将 return 部门 50 的所有员工。

我的问题是:当return输入所需数据时,如何获取 oracle 表单生成的 WHERE 子句?...

我在 pre-query trigger

中使用了此代码
:parameters.whr:=get_block_property('employees',default_where);

但是return没有结果

接近,但还不够接近。它是您需要的 GET_BLOCK_PROPERTY,但使用它的 LAST_QUERY 参数。它将return SQL语句指定块中的最后一个查询。

或者,使用系统变量:SYSTEM.LAST_QUERY(return结果相同)。

这是一个例子(下面的代码可能会放在 employees 块的 KEY-EXEQRY 触发器中):

declare
  l_lastq          varchar2(4000);
  l_where_position number;
  l_where_clause   varchar2(4000);
begin
  execute_query;
  l_lastq := :system.last_query;
  l_where_position := instr(lower(l_lastq), 'where');

  if l_where_position > 0 then
     l_where_clause := substr(l_lastq, l_where_position, length(l_lastq));
     message('WHERE clause: ' || l_where_clause);
  end if;
end;