When you
generate RPCs (remote procedure calls) using SQL*Module, you have a choice of early
binding or late binding. Your choice of early or late binding is
controlled by the BINDING option.
When you choose
early binding, SQL*Module generates a call to the procedure stored in the
database, and also uses a time stamp that is associated with the call.
The time stamp records the date and time (to the nearest second) that the
stored procedure was last compiled. The time stamp is created by the Oracle
database. If a host application calls the stored procedure through the
interface procedure, and the time stamp recorded with the interface procedure
is earlier than the time stamp on the stored procedure recorded in the
database, an error is returned to the host application in the SQLCODE and/or
SQLSTATE status parameter. The SQLCODE error is 4062 "time stamp of name
has been changed".
The late binding
option, on the other hand, does not use a time stamp. If your application calls
a stored procedure that has been recompiled since SQL*Module generated the
interface procedure, no error is returned to the application.
The advantages
of late binding are
- Greater flexibility
- Changes in the stored procedure(s) are transparent to the user
- Gives behavior similar to interactive SQL (for example, SQL*PLus)
The
disadvantages of late binding are
- There might be additional performance overhead at runtime, due to the necessity of compiling the PL/SQL anonymous block.
- It is difficult to detect runtime PL/SQL compilation errors in the host application. For example, if the anonymous block that calls the late-bound procedure fails at runtime, there is no convenient way for the host application to determine the cause of the error.
- The lack of time-stamp capability means that changes, perhaps radical changes, in the stored procedure could be made after the host application was built, and the application would have no way of detecting this.
No comments:
Post a Comment