Sad*_*aal 3 oracle oracleforms
我正在使用 oracle 表单 6i。
只是我将数据库块与这些项目一起使用:
Employees: employee_id , job_id , department_id , manager_id
Run Code Online (Sandbox Code Playgroud)
注意:员工是数据块名称。
例如:当最终用户点击进入查询按钮并在department_id项目中写入50然后点击执行查询按钮时;数据块将返回部门 50 中的所有员工。
我的问题是:如何获得 oracle 表单在返回所需数据时生成的 WHERE CLAUSE?...
我在 pre-query trigger
:parameters.whr:=get_block_property('employees',default_where);
Run Code Online (Sandbox Code Playgroud)
但它没有返回任何结果
你很接近,但还不够接近。这是GET_BLOCK_PROPERTY你需要的,但使用它的LAST_QUERY参数。它将返回指定块中最后一个查询的 SQL 语句。
或者,使用系统变量:SYSTEM.LAST_QUERY(返回相同的结果)。
这是一个示例(以下代码可能会放在block 的KEY-EXEQRY触发器中employees):
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;
Run Code Online (Sandbox Code Playgroud)