Sie sind auf Seite 1von 17

About Us Contact

Home ORACLE UNIX Interview Questions

You are here: Home / Form Triggers

Form Triggers
Trigger is collection of SQL , PL/SQL and Form coding statements executed based on the event.
Triggers are executed automatically at run time based on an event.

Triggers can be created in three levels.


1. Form level triggers
2. Block level triggers
3. Item level triggers

Form Level Triggers


These triggers are applied to all the components in the form.
Example

Trigger
Slno Explanation

1
pre-form Activated before entering into the form.

2
when-new-form-instance Activated whenever the form is ready to accept data from user

3
on-clear-details Activated when form is cleared ( clear screen )

4
post-form Activated when cursor leaves the form.

5 on-logon fires when user enters into application.

This is the first trigger executed in forms.

Application loses database connection as soon as on-logon triggers is executed.


User has to provide database connection information in this trigger code to re-
establish the connection

Fired when user quits the application


6
on-logout
This is the last trigger executed in forms

7
when-timer-expired fired whenever there is a change in system time

Block level triggers


Applied to all items in the block.
Example

Slno
Trigger Explanation

1
pre-block Fired before entering into the block.

2
when-new-block-instance Fried when block is ready to accept input.

3
when-clear-block Fired whe block is cleared.

4
pre-query Fired when executing a query.

5
post-query Fired after executing the query.

6
post-block Fired when cursor leaves the block

7
when-create-record Fired whenever a new record is inserted.

Item level triggers


Applied for a particular item.
Slno
Trigger Explanation

1
pre-text-item Fired before entering into the text item

Fired when cursor moves to the next item


2
post-text-item
( Fired after placing cursor in next item )

3
when-new-item-instance Fired when item is ready to accept input

4
when-validate-item Fired when item value is changed

5
when-clear-item Fired when item is cleared

Fired when cursor is moving to next item.

(Fired before placing cursor in next item )


6
key-next-item Cursor will not be placed in next item after executing this trigger. ( Use next_item
built_in )

Fired only when TAB key is pressed.

Button

Slno Trigger Explanation

1
when-button-pressed Fired when button is pressed

Radio group

Slno Trigger Explanation

1
when-radio-changed Fired whenever radio group value is changed
Check box

Slno Trigger Explanation

1
when-checkbox-changed Fired whenever checkbox value is changed

List Item

Slno Trigger Explanation

1
when-list-changed Fired when list value is changed

Lets workout with few examples


Example of on-logon trigger
Create a table student.
SQL> create table student ( sno number(3),
Sname varchar2(10),
Marks number(3));
Insert two rows into the table.
SQL> insert into student values ( 101 , ‘ARUN’, 40);
SQL> insert into student values ( 102 , ‘KIRAN’, 60);
SQL> commit;

Now, create form based on student table ( using data block and layout wizard )
Save the from with the name STUDENT.FMB
In object navigator of STUDENT.FMB
Create a new trigger under STUDENT form.
Select trigger click on create button
form48

Select ON-LOGON Ok
Write the following code in the trigger
Message (‘Welcome to my Application’);
Logon (‘scott’, ‘tiger@oracle’);
Click on compile button.
You should get a message “Successfully compiled”
form49

Message ( ) — is a built_in, used to display message


Logon ( ) — is a built_in, used to extablish database connection through code.
Note: Application loses the database connection as soon as ON-LOGON trigger is executed.
Hence, to re-establish the connection we use logon ( ) — built-in

Similarly , Lets us create ON_LOGOUT trigger ( It is a form level trigger).

Create a new trigger under STUDENT form.


Select trigger click on create button
Select ON-LOGOUT Ok
Write the following code in the trigger
Message (‘Thank you for using my Application’);

Click on compile button.


You should get a message “Successfully compiled”
form50

So, we have created two triggers in our form.

form51
Program Compile Module
Program Run Form

As we know, ON-LOGON trigger is the first trigger which is fired,

We get a message “Welcome to my Application” at the bottom of the form.

form52

Select Action in Menu Bar Exit , ON-LOGOUT trigger is executed.


form53

Now, lets make few changes in the existing form ( STUDENT.FMB)


Open the existing form ( STUDENT.FMB ) Open ON-LOGON trigger ( Right click Pl/SQL editor )
Include another message( ) – built_in
Now, Compile.
form54

Close the trigger.


Program Compile Module
Program Run form
form55

We get welcome message in pop up window.


By using additional message( ) – built_in , we get message in pop up window.

Example of WHEN-VALIDATE-ITEM trigger ( Trigger fires when item value is changed).

Create a table EMPONE in our database ( It is same as standard EMP table).


Create a form based on EMPONE table ( I think you already have it. EMPONE.FMB ).
If you already have EMPONE.FMB, Open the existing form ( EMPONE.FMB)

In Object Navigator ,
Under data block (EMPONE) à Item ( ENAME) à Create trigger à WHEN-VALIDATE-ITEM
form57

Write the following code in WHEN-VALIDATE-ITEM trigger

begin
if :ename is null then
message (‘Employee name cannot be blank’);
message(‘ ‘);
raise form_trigger_failure;
end if;
end;
Click on compile button.
You should get confirmation message “successfully compiled”.
form58

Let’s create another trigger ( WHEN-VALIDATE-ITEM )which checks for valid salary.
In Object navigator à under data block ( EMPONE) à under SAL item à Create trigger à WHEN-VALIDATE-
ITEM

begin
if :sal <3000 then
message(‘Employee sal must not be less than 3000’);
message(‘ ‘);
raise form_trigger_failure;
end if;
end;
Click on compile button.
You should get confirmation message “successfully compiled”.
form59

Raise form_trigger_failure :
It stops the user action. Cursor cannot be moved to next item until restriction is satisfied.
It is similar to raise_application_error in database trigger.

Note
Items are referred with : ( COLON ) before them in coding.

So, we have create two trigger. Both are Item level triggers.
One trigger in ENAME item.
Another trigger in SAL item.
form60

Program à Compile Module


Program à Run Form

In the form run time environment ( Oracle Application Server Form Services )
Enter Empno – 101
Keep the cursor on ENAME ( do not enter anything)
Keep the cursor on JOB item, we get a message “Employee name cannot be blank”

form61
Click on OK à Cursor will be back on ENAME item.
That is the advantage of raise form_trigger_failure.
Cursor cannot be moved to next item until restriction is satisfied.

Lets check the trigger on SAL Item.


Enter SAL value 2000, we get message “Employee salary must not be less than 3000”.

form62

Order of Execution of triggers at runtime


Hierarchy of Form level triggers

1. ON-LOGON
2. PRE-FORM
3. WHEN-NEW-FORM-INSTANCE
4. POST-FORM
5. ON-LOGOUT

Hierarchy of block level triggers


1. PRE-BLOCK
2. WHEN-NEW-BLOCK-INSTANCE
3. POST-BLOCK

Hierarchy of Item level triggers

PRE-TEXT-ITEM
WHEN-NEW-ITEM-INSTANCE
KEY-NEXT-ITEM ( TAB )
POST-TEXT-ITEM

 Share it!  Share  Tweet  Share

RECENT POSTS

Basics Of CDS View

LISTAGG In oracle With Example

regexpr_instr in oracle

Regexp_replace in oracle

Regexp_like in oracle

© Copyright 2014 123Techguru · Sitemap · Privacy Policy ·Contactus ·

Das könnte Ihnen auch gefallen