如何获取 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;
我正在使用 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;