ORACLE FORMS - Types of Triggers in Forms
ORACLE FORMS - Types of Triggers in Forms
ORACLE FORMS
T U E S D AY, J U LY 7 , 2 0 0 9
Block-processing triggers: - Block processing triggers fire in response to events related to record management in a
block. E.g. When-Create-Record, When-Clear-Block, When-Database-Record, When-Remove-Record
Interface event triggers: - Interface event triggers fire in response to events that occur in the form interface. Some
of these triggers, such as When-Button-Pressed, fire only in response to operator input or manipulation. Others,
like When-Window-Activated, can fire in response to both operator input and programmatic control. E.g. When-
Button-Pressed, When-Checkbox-Changed, Key- [all], When-Radio-Changed, When-Timer-Expired, When-Window-
Activated, When-Window-Resized
Master-detail triggers: - Form Builder generates master-detail triggers automatically when you define a master-
detail relation between blocks. The default master-detail triggers enforce coordination between records in a detail
block and the master record in a master block. Unless you are developing your own custom block-coordination
scheme, you do not need to define these triggers yourself. Instead, simply create a relation object, and let Form
Builder generate the triggers required to manage coordination between the master and detail blocks in the relation.
E.g. On-Check-Delete-Master, On-Clear-Details, On-Populate-Details
Message-handling triggers: - Form Builder automatically issues appropriate error and informational messages in
response to runtime events. Message handling triggers fire in response to these default messaging events. E.g. On-
Error, On-Message
Navigational triggers: - Navigational triggers fire in response to navigational events. For instance, when the
operator clicks on a text item in another block, navigational events occur as Form Builder moves the input focus
from the current item to the target item. Navigational events occur at different levels of the Form Builder object
hierarchy (Form, Block, Record, Item). Navigational triggers can be further sub-divided into two categories: Pre- and
Post- triggers, and When-New-Instance triggers. Pre- and Post- triggers fire as Form Builder navigates internally
through different levels of the object hierarchy. As you might expect, these triggers fire in response to navigation
initiated by an operator, such as pressing the [Next Item] key. However, be aware that these triggers also fire in
response to internal navigation that Form Builder performs during default processing. To avoid unexpected results,
you must consider such internal navigation when you use these triggers. E.g. Pre-Form, Pre-Block, Pre-Text-Item,
Post-Text-Item, Post-Record, Post-Block, Post-Form
When-New-Instance triggers fire at the end of a navigational sequence that places the input focus in a different item.
Specifically, these triggers fire just after Form Builder moves the input focus to a different item, when the form
returns to a quiet state to wait for operator input. Unlike the Pre- and Post- navigational triggers, the When-New-
Instance triggers do not fire in response to internal navigational events that occur during default form processing.
E.g. When-New-Form-Instance, When-New-Block-Instance, When-New-Record-Instance, When-New-Item-Instance
kashif-oracle-forms.blogspot.com/2009/07/types-of-triggers-in-forms.html 1/8
20/02/2024, 10:28 ORACLE FORMS: Types of Triggers in Forms
Query-time triggers: - Query-time triggers fire just before and just after the operator or the application executes a
query in a block. E.g. Pre-Query, Post-Query
Transactional triggers: - Transactional triggers fire in response to a wide variety of events that occur as a form
interacts with the data source. E.g. On-Delete, On-Insert, On-Lock, On-Logon, On-Update, Post-Database-Commit,
Post-Delete, Post-Forms-Commit, Post-Insert, Post-Update, Pre-Commit, Pre-Delete, Pre-Insert, Pre-Update
Validation triggers: - Validation triggers fire when Form Builder validates data in an item or record. Form Builder
performs validation checks during navigation that occurs in response to operator input, programmatic control, or
default processing, such as a Commit operation. E.g. When-Validate-Item, When-Validate-Record
Ø KEY Commit
Ø Pre Commit
Ø Pre/On/Post Delete
Ø Pre/On/Post Update
Ø Pre/On/Post Insert
Ø On commit
Ø Post Database Commit
kashif-oracle-forms.blogspot.com/2009/07/types-of-triggers-in-forms.html 2/8
20/02/2024, 10:28 ORACLE FORMS: Types of Triggers in Forms
You can also add list elements individually at runtime by using the ADD_LIST_ELEMENT built-in subprogram, or
you can populate the list from a record group at runtime using the POPULATE_LIST built-in. If you populate the list
from a record group, be sure that the record group you are using to populate the list contains the relevant values
before you call POPULATE_LIST. If the record group is a static record group, it will already contain the appropriate
values. Otherwise, you should populate the group at runtime using one of the record group subprograms.
The Object Library provides an easy method of reusing objects and enforcing standards across the entire
development organization.
Object Library can be used to:
1. Object libraries are automatically re-opened when you startup Form Builder, making your reusable objects
immediately accessible.
2. You can associate multiple object libraries with an application. For example, you can create an object library
specifically for corporate standards, and you can create an object library to satisfy project-specific requirements.
3. Object libraries feature Smart Classes-- objects that you define as being the standard. You use Smart Classes to
convert objects to standard objects.
6. Key-next/Post-Text (Difference)
Post-Text–Item: Fires during the Leave the Item process for a text item. Specifically, this trigger fires when the input
focus moves from a text item to any other item.
Key-Next-Item: The key-next is fired as a result of the key action. Key next will not fire unless there is a key event.
Call Form: Runs an indicated form while keeping the parent form active. Form Builder runs the called form with the
same Runform preferences as the parent form. When the called form is exited Form Builder processing resumes in
the calling form at the point from which you initiated the call to CALL_FORM.
PROCEDURE CALL_FORM (formmodule_name VARCHAR2, display NUMBER, switch_menu NUMBER, query_mode
NUMBER, data_mode NUMBER, paramlist_name/id VARCHAR2);
New Form: Exits the current form and enters the indicated form. The calling form is terminated as the parent form. If
the calling form had been called by a higher form, Form Builder keeps the higher call active and treats it as a call to
the new form. Form Builder releases memory (such as database cursors) that the terminated form was using.
Form Builder runs the new form with the same Runform options as the parent form. If the parent form was a called
form, Form Builder runs the new form with the same options as the parent form.
PROCEDURE NEW_FORM (formmodule_name VARCHAR2, rollback_mode NUMBER, query_mode NUMBER,
kashif-oracle-forms.blogspot.com/2009/07/types-of-triggers-in-forms.html 3/8
20/02/2024, 10:28 ORACLE FORMS: Types of Triggers in Forms
Open Form: Opens the indicated form. Use OPEN_FORM to create multiple-form applications, that is, applications
that open more than one form at the same time.
PROCEDURE OPEN_FORM (form_name VARCHAR2, activate_mode NUMBER, session_mode NUMBER, data_mode
NUMBER, paramlist_id/name PARAMLIST);
(i) Content Canvas (Default Canvas) [A content canvas is the required on each window you create]
(ii) Stack Canvas [you can display more then one stack canvas in a window at the same time]
(iii) Tab Type Window [In Tab canvas that have tab pages and have one or more then tab page]
(iv) Toolbar Canvas [A toolbar canvas often is used to create Toolbar Windows. There are two type of Toolbar
window.
a. Horizontal Toolbar Canvas: - Horizontal Toolbar canvases are displayed at the top of the window, Just Under the
Main Menu Bar.
b. Vertical Toolbar Canvas: - While vertical Toolbar are displayed along the Left Edge of the window.
An object group is a container for a group of objects. You define an object group when you want to package related
objects so you can copy or subclass them in another module.
Object groups provide a way to bundle objects into higher-level building blocks that can be used in other parts of
an application and in subsequent development projects. For example, you might build an appointment scheduler in
a form and then decide to make it available from other forms in your applications. The scheduler would probably be
built from several types of objects, including a window and canvas, blocks, and items that display dates and
appointments, and triggers that contain the logic for scheduling and other functionality. If you packaged these
objects into an object group, you could then copy them to any number of other forms in one simple operation.
You can create object groups in form and menu modules. Once you create an object group, you can add and
remove objects to it as desired.
We can use the same LOV for 2 columns by passing the return values in global values and using the global values
in the code.
kashif-oracle-forms.blogspot.com/2009/07/types-of-triggers-in-forms.html 4/8
20/02/2024, 10:28 ORACLE FORMS: Types of Triggers in Forms
The static LOV contains the predetermined values while the dynamic LOV contains values that come at run time
A format trigger is a PL/SQL function executed before an object is formatted. A trigger can be used to dynamically
change the formatting attributes of the object.
A matrix (cross tab) report contains one row of labels, one column of labels, and information in a grid format that is
related to the row and column labels. A distinguishing feature of matrix reports is that the number of columns is not
known until the data is fetched from the database.
To create a matrix report, you need at least four groups: one group must be a cross-product group, two of the
groups must be within the cross-product group to furnish the "labels," and at least one group must provide the
information to fill the cells. The groups can belong to a single query or to multiple queries.
A matrix with group report is a group above report with a separate matrix for each value of the master group.
A nested matrix (crosstab) report is a matrix report in which at least one parent/child relationship appears within the
matrix grid.
The new Child Dimension property of the nested group enables you to eliminate empty rows and/or columns in your
single-query nested matrix.
Nested Matrix Report: Has multiple dimensions going across and/or down the page
Multi-Query Matrix with Break: Is similar to a nested matrix report in that it has more than two dimensions. Does not
display records that do not contain data
Matrix Break Reports: Contains a new matrix for each master record
kashif-oracle-forms.blogspot.com/2009/07/types-of-triggers-in-forms.html 5/8
20/02/2024, 10:28 ORACLE FORMS: Types of Triggers in Forms
Lexical Parameters: Lexical references are placeholders for text that you embed in a SELECT statement. You can
use lexical references to replace the clauses appearing after SELECT, FROM, WHERE, GROUP BY, ORDER BY,
HAVING, CONNECT BY, and START WITH.
You cannot make lexical references in a PL/SQL statement. You can, however, use a bind reference in PL/SQL to set
the value of a parameter that is then referenced lexically in SQL. Look at the example below.
You create a lexical reference by entering an ampersand (&) followed immediately by the column or parameter
name. A default definition is not provided for lexical references. Therefore, you must do the following:
Ø Before you create your query, define a column or parameter in the data model for each lexical reference in the
query. For columns, you must enter Value if Null, and, for parameters, you must enter Initial Value. Report Builder
uses these values to validate a query with a lexical reference.
Ø Create your query containing lexical references.
Bind Parameters: Bind references (or bind variables) are used to replace a single value in SQL or PL/SQL, such as a
character string, number, or date. Specifically, bind references may be used to replace expressions in SELECT,
WHERE, GROUP BY, ORDER BY, HAVING, CONNECT BY, and START WITH clauses of queries. Bind references may
not be referenced in FROM clauses or in place of reserved words or clauses.
You create a bind reference by entering a colon (:) followed immediately by the column or parameter name. If you do
not create a column or parameter before making a bind reference to it in a SELECT statement, Report Builder will
create a parameter for you by default.
The Column Mode property controls how Report Builder fetches and formats data for instances of repeating frames.
With Column Mode set to Yes, the next instance of a repeating frame can begin formatting before the previous
instance is completed. With Column Mode set to No, the next instance cannot begin formatting before the previous
instance is completed. Column Mode is used mainly for master repeating frames or repeating frames that contain
fields that may expand vertically or horizontally (i.e., elasticity is Variable or Expand).
Packages provide a method of encapsulating and storing related procedures, funtions and other package
constructs as a unit in the database. They offer increased functionality (for example, global package variables can
be declared and used by any procedure in the package). They also improve performance (for example, all objects of
the package are parsed, compiled, and loaded into memory once).
Package specification contains declarations of public constructs where as the package body contains definitions of
all those public constructs and declarations & definitions of private constructs.
PL/SQL tables are declared in the declaration portion of the block. A table is a composite datatype in PL/SQL.
PL/SQL tables can have one column and a primary key neither of which can be named. The column can be any
scalar type but primary key should be a BINARY_INTEGER datatype.
Rules for PL/SQL Tables:
1. A loop must be used to insert values into a PL/SQL Table
2. You cannot use the Delete command to delete the contents of PL/SQL Table. You must assign an empty table to
the PL/SQL table being deleted.
kashif-oracle-forms.blogspot.com/2009/07/types-of-triggers-in-forms.html 6/8
20/02/2024, 10:28 ORACLE FORMS: Types of Triggers in Forms
Database triggers are PL/SQL, Java, or C procedures that run implicitly whenever a table or view is modified or
when some user actions or database system actions occur. Database triggers can be used in a variety of ways for
managing your database. For example, they can automate data generation, audit data modifications, enforce
complex integrity constraints, and customize complex security authorizations.
Row Triggers
A row trigger is fired each time the table is affected by the triggering statement.
For example, if an UPDATE statement updates multiple rows of a table, a row trigger is fired once for each row
affected by the UPDATE statement.
If a triggering statement affects no rows, a row trigger is not executed at all.
Row triggers are useful if the code in the trigger action depends on data provided by the triggering statement or
rows that are affected.
Statement Triggers
A statement trigger is fired once on behalf of the triggering statement, regardless of the number of rows in the table
that the triggering statement affects (even if no rows are affected).
For example, if a DELETE statement deletes several rows from a table, a statement-level DELETE trigger is fired
only once, regardless of how many rows are deleted from the table.
Statement triggers are useful if the code in the trigger action does not depend on the data provided by the
triggering statement or the rows affected.
For example, if a trigger makes a complex security check on the current time or user, or if a trigger generates a
single audit record based on the type of triggering statement, a statement trigger is used.
AFTER Triggers AFTER triggers execute the trigger action after the triggering statement is executed. AFTER
triggers are used in the following situations:
AFTER triggers are used when you want the triggering statement to complete before executing the trigger action.
If a BEFORE trigger is already present, an AFTER trigger can perform different actions on the same triggering
statement.
kashif-oracle-forms.blogspot.com/2009/07/types-of-triggers-in-forms.html 7/8
20/02/2024, 10:28 ORACLE FORMS: Types of Triggers in Forms
Combinations
Using the options listed in the previous two sections, you can create four types of triggers:
BEFORE statement trigger Before executing the triggering statement, the trigger action is executed.
BEFORE row trigger Before modifying each row affected by the triggering statement and before checking
appropriate integrity constraints, the trigger action is executed provided that the trigger restriction was not violated.
AFTER statement trigger After executing the triggering statement and applying any deferred integrity constraints,
the trigger action is executed.
AFTER row trigger After modifying each row affected by the triggering statement and possibly applying appropriate
integrity constraints, the trigger action is executed for the current row provided the trigger restriction was not
violated. Unlike BEFORE row triggers, AFTER row triggers lock rows.
Poplist: The poplist style list item appears initially as a single field (similar to a text item field). When the end user
selects the list icon, a list of available choices appears.
Tlist: The Tlist style list item appears as a rectangular box, which displays a fixed number of values. When the Tlist
contains values that cannot be displayed (due to the displayable area of the item), a vertical scroll bar appears,
allowing the end user to view and select undisplayed values.
Combo Box: The combo box style list item combines the features found in poplists and text items. It displays fixed
values and can accept a user-entered value.
kashif-oracle-forms.blogspot.com/2009/07/types-of-triggers-in-forms.html 8/8