Search Results x_record_version_number




Overview

PA_PROJECT_CONTACTS_PKG is the table-handler package for the PA_PROJECT_CONTACTS table in Oracle EBS Projects (PA). PA_PROJECT_CONTACTS stores the associations between a project and the contacts (customers, bill-to/ship-to customers, and contact persons) recorded against that project. The package body exposes the standard four entry points that Oracle Forms generates and that Oracle's table-handler API convention expects: Insert_Row, Lock_Row, Update_Row, and Delete_Row. Each operates on a single PA_PROJECT_CONTACTS row and enforces the optimistic locking semantics used by Oracle Forms block processing.

The critical context surrounding x_record_version_number is that this parameter participates in the locking and read-consistency protocol of the table handler. The stored procedure Lock_Row explicitly compares the row's persisted record_version_number against the caller-supplied x_record_version_number; a mismatch signals that another session has modified the row, and the procedure raises an exception rather than permitting a lost update.

Key Procedures and Functions

  • Insert_Row — Inserts a new row into PA_PROJECT_CONTACTS for the given project/contact combination, carrying the standard WHO columns (last_update_date, last_updated_by, creation_date, created_by, last_update_login) along with record_version_number. The header source retains an X_Rowid IN OUT NOCOPY parameter, and after the insert the procedure re-queries by project_id, customer_id, and contact_id to populate the new ROWID; if no row is found it raises NO_DATA_FOUND.
  • Lock_Row — Selects the row identified by X_Rowid with FOR UPDATE OF Project_Id NOWAIT to serialize concurrent edits, then compares recinfo.record_version_number against the incoming x_record_version_number. If the row is missing it raises FND_MESSAGE 'FORM_RECORD_DELETED'; if the version numbers differ it raises a version-mismatch condition, preventing the caller from overwriting a newer row.
  • Update_Row — Performs the modification of an existing PA_PROJECT_CONTACTS row, honoring the same x_record_version_number optimistic-locking contract so the update is rejected when the persisted version has advanced beyond the one the form last read.
  • Delete_Row — Removes the target PA_PROJECT_CONTACTS row after the same ROWID/version checks, ensuring a stale client cannot delete a row that has already been changed elsewhere.

Tables Accessed

The package reads and writes only PA_PROJECT_CONTACTS (referenced through the APPS synonym). Insert_Row issues an INSERT against it; Lock_Row performs the FOR UPDATE read; Update_Row and Delete_Row apply the corresponding DML. No other base tables are referenced in the documented body, which keeps the package tightly scoped to the project-contact association entity.

Usage Notes

Because these are the standard Forms-generated table handlers, PA_PROJECT_CONTACTS_PKG is normally invoked indirectly by the Oracle Forms UI for project contacts rather than by end users or concurrent programs. The package is referenced by one other package, indicating reuse within the project-contact maintenance flow. For custom integrations, the same convention applies: callers should pass the current x_record_version_number read at fetch time so that Lock_Row and Update_Row can detect intervening changes and return the appropriate exception. The $Header identifies version 120.1 (2005), so the package is stable and has not required functional change across the 12.1.1 and 12.2.2 releases. Client-side code must always handle NO_DATA_FOUND and FND_MESSAGE errors raised during locking.