oracle forms : query triggers

13
Query Triggers

Upload: sekhar-byna

Post on 10-Feb-2017

639 views

Category:

Software


0 download

TRANSCRIPT

Page 1: Oracle Forms : Query Triggers

Query Triggers

Page 2: Oracle Forms : Query Triggers

Objectives

• How Query Processing occurs in Forms?• Writing Pre-Query Trigger• Writing Post-Query Trigger• Scope of the triggers and Built-ins

Page 3: Oracle Forms : Query Triggers

Query Processing

Perform query

Fetch a row into a new record

Mark record as valid

Fire Post-Query trigger

Validate any record changes

Abort queryon failure

Flushrecord

on failure

Construct SELECT...

Fire Pre-Query trigger

Page 4: Oracle Forms : Query Triggers

Where & Order By Clauses

• Three sources for Where Clause– Query/Where Dialog Box– Example Record– Where Clause Block PropertyWhere Clauses are combined by the AND Operator.

• Two sources for Order By Clause– Order by Clause Block Property– Query/Where Dialog BoxSecond source for Order by clause Overrides the first one.

Page 5: Oracle Forms : Query Triggers

SELECT statement Issued

SELECT base_column, ..., ROWIDINTO :base_item, ..., :ROWIDFROM base_tableWHERE default_where_clause AND (example_record_conditions) AND (query_where_conditions)ORDER BY default_order_by_clause |

query_where_order_by

Page 6: Oracle Forms : Query Triggers

Pre-Query Trigger

• Defined at the Block-level• Fires once before the query is issued.

IF :emp.enmpno||:emp.ename|| :emp.hiredate IS NULL THEN MESSAGE(‘You must query on emp id or name or joindate’);

RAISE form_trigger_failure; --Built-in ExceptionEND IF;

Page 7: Oracle Forms : Query Triggers

Post-Query Trigger

• Written at Block level• Use to populate nondatabase items and calculate statistics• Fires once for each fetched record.

• SELECT dname INTO :control.dept_name FROM dept WHERE deptno=:emp.deptno;

Page 8: Oracle Forms : Query Triggers

Query Array Processing

• Reduces network traffic• Enables Query Array processing:

– Enable Array Processing option– Set Query Array Size property

• Query Array Size property• Query All Records property

Page 9: Oracle Forms : Query Triggers

Enter-Query Mode

• Some triggers may fire in Enter-Query mode.• Set to fire in Enter-Query Mode property.• Test mode during execution with :SYSTEM.MODE

– NORMAL– ENTER-QUERY– QUERY

IF :SYSTEM.MODE = ’NORMAL’ THEN ENTER_QUERY;

ELSE EXECUTE_QUERY;

END IF;

Page 10: Oracle Forms : Query Triggers

Query Info at Runtime

• SYSTEM.MODE

• SYSTEM.LAST_QUERY–Contains bind variables (EMPNO = :1) before SELECT_RECORDS–Contains actual values (EMPNO = 7566) after SELECT_RECORDS

Page 11: Oracle Forms : Query Triggers

Query Info at Runtime

• GET_BLOCK_PROPERTY SET_BLOCK_PROPERTY– Get and set:

DEFAULT_WHEREORDER_BYQUERY_ALLOWEDQUERY_HITS

– Get only:QUERY_OPTIONSRECORDS_TO_FETCH

Page 12: Oracle Forms : Query Triggers

Query Info at Runtime

• GET_ITEM_PROPERTY SET_ITEM_PROPERTY– Get and set:

CASE_INSENSITIVE_QUERYQUERYABLEQUERY_ONLY

– Get only:QUERY_LENGTH

Page 13: Oracle Forms : Query Triggers

Summary

• Where clauses are combined with AND Operator• Second Order by Overrides the first one.• A Pre-Query trigger fires before a query executes. Use it to check or

modify query conditions.• A Post-Query trigger fires as each record is fetched. Use it to perform

calculations and populate additional items.