oracle forms : query triggers
TRANSCRIPT
![Page 1: Oracle Forms : Query Triggers](https://reader031.vdocuments.mx/reader031/viewer/2022022122/589ca3c21a28abf4148b6557/html5/thumbnails/1.jpg)
Query Triggers
![Page 2: Oracle Forms : Query Triggers](https://reader031.vdocuments.mx/reader031/viewer/2022022122/589ca3c21a28abf4148b6557/html5/thumbnails/2.jpg)
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](https://reader031.vdocuments.mx/reader031/viewer/2022022122/589ca3c21a28abf4148b6557/html5/thumbnails/3.jpg)
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](https://reader031.vdocuments.mx/reader031/viewer/2022022122/589ca3c21a28abf4148b6557/html5/thumbnails/4.jpg)
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](https://reader031.vdocuments.mx/reader031/viewer/2022022122/589ca3c21a28abf4148b6557/html5/thumbnails/5.jpg)
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](https://reader031.vdocuments.mx/reader031/viewer/2022022122/589ca3c21a28abf4148b6557/html5/thumbnails/6.jpg)
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](https://reader031.vdocuments.mx/reader031/viewer/2022022122/589ca3c21a28abf4148b6557/html5/thumbnails/7.jpg)
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](https://reader031.vdocuments.mx/reader031/viewer/2022022122/589ca3c21a28abf4148b6557/html5/thumbnails/8.jpg)
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](https://reader031.vdocuments.mx/reader031/viewer/2022022122/589ca3c21a28abf4148b6557/html5/thumbnails/9.jpg)
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](https://reader031.vdocuments.mx/reader031/viewer/2022022122/589ca3c21a28abf4148b6557/html5/thumbnails/10.jpg)
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](https://reader031.vdocuments.mx/reader031/viewer/2022022122/589ca3c21a28abf4148b6557/html5/thumbnails/11.jpg)
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](https://reader031.vdocuments.mx/reader031/viewer/2022022122/589ca3c21a28abf4148b6557/html5/thumbnails/12.jpg)
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](https://reader031.vdocuments.mx/reader031/viewer/2022022122/589ca3c21a28abf4148b6557/html5/thumbnails/13.jpg)
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.