Oracle Forms - 搜索非数据库项目
Oracle Forms - searching on a non-database item
我有一个包含四个项目的数据块 OBJECTS:
- ID
- TYPE_ID(外键,table 类型中的命名 ID)
- TYPE_DESCRIPTION(非数据库项,在 table TYPES 中命名为 DESCRIPTION)
- STA_ID(不相关)
在我希望能够查询 TYPE_DESCRIPTION(非数据库项)的表单中,通过输入一个短语,如 "S%" 或“%P”,并获得所有结果按 TYPE_DESCRIPTION.
筛选的列
我找到了解决问题的办法。这是 PRE_QUERY 触发器的代码:
declare
where_str varchar2(512) := 'where 1 = 1';
begin
if (:OBJECTS.TYPE_DESCRIPTION is not null) then
if instr(:OBJECTS.TYPE_DESCRIPTION, '%') <> 0 then
where_str := where_str ||
'and OBJECTS.TYPE_ID in (select TYPES.ID from TYPES ' ||
'where TYPES.DESCRIPTION like '''|| replace(:OBJECTS.TYPE_DESCRIPTION, '''', '''''') ||''')';
else
where_str := where_str ||
'and OBJECTS.TYPE_ID in (select TYPES.ID from TYPES ' ||
'where TYPES.DESCRIPTION='''|| replace(:OBJECTS.TYPE_DESCRIPTION, '''', '''''') ||''')';
end if;
end if;
set_block_property('OBJECTS', default_where, where_str);
end;
http://oracleebsgeeks.blogspot.com/2011/12/querying-on-non-database-field-in.html
我有一个包含四个项目的数据块 OBJECTS:
- ID
- TYPE_ID(外键,table 类型中的命名 ID)
- TYPE_DESCRIPTION(非数据库项,在 table TYPES 中命名为 DESCRIPTION)
- STA_ID(不相关)
在我希望能够查询 TYPE_DESCRIPTION(非数据库项)的表单中,通过输入一个短语,如 "S%" 或“%P”,并获得所有结果按 TYPE_DESCRIPTION.
筛选的列我找到了解决问题的办法。这是 PRE_QUERY 触发器的代码:
declare
where_str varchar2(512) := 'where 1 = 1';
begin
if (:OBJECTS.TYPE_DESCRIPTION is not null) then
if instr(:OBJECTS.TYPE_DESCRIPTION, '%') <> 0 then
where_str := where_str ||
'and OBJECTS.TYPE_ID in (select TYPES.ID from TYPES ' ||
'where TYPES.DESCRIPTION like '''|| replace(:OBJECTS.TYPE_DESCRIPTION, '''', '''''') ||''')';
else
where_str := where_str ||
'and OBJECTS.TYPE_ID in (select TYPES.ID from TYPES ' ||
'where TYPES.DESCRIPTION='''|| replace(:OBJECTS.TYPE_DESCRIPTION, '''', '''''') ||''')';
end if;
end if;
set_block_property('OBJECTS', default_where, where_str);
end;
http://oracleebsgeeks.blogspot.com/2011/12/querying-on-non-database-field-in.html