"D:\Replicator_1_beta\Client\TEMPLATE.GDB" Previous topic Chapter index Next topic

DETAIL_GEN

 

 

Descriptions

Вызывается клиентом. Поколение изменений в таблице DETAIL. [in]A_CLIENT_ID - ID БД клиента. [in]A_SERV_GEN - поколение изменений на сервере, которое запросил клиент. Возвращает набор записей. [out]LOG_ACTION - действие которое должен выполнить клиент(I - вставить U - обновить D - удалить), Остальные выходные параметры - поля записи. В случае удаления все поля, кроме LOG_GID установлены в NULL

 

Input Parameters

Parameter

Type

A_CLIENT_ID

INTEGER

A_SERV_GEN

INTEGER

 

Output Parameters

Parameter

Type

LOG_GID

NUMERIC (18, 0)

LOG_OWN_GEN

INTEGER

LOG_ACTION

CHAR (1)

DATA

VARCHAR (255)

MASTER_GID

NUMERIC (18, 0)

 

Definition


CREATE PROCEDURE DETAIL_GEN (
    A_CLIENT_ID INTEGER,
    A_SERV_GEN INTEGER)
RETURNS (
    LOG_GID NUMERIC (18, 0),
    LOG_OWN_GEN INTEGER,
    LOG_ACTION CHAR (1),
    DATA VARCHAR (255),
    MASTER_GID NUMERIC (18, 0))
AS
DECLARE VARIABLE LOG_UPD_GEN INTEGER;
DECLARE VARIABLE LOG_INS_GEN INTEGER;
DECLARE VARIABLE LOG_IS_DELETED INTEGER;
BEGIN
     FOR
       SELECT
           LOG_GID,
           LOG_UPD_GEN,
           LOG_INS_GEN,
           LOG_IS_DELETED,
           LOG_OWN_GEN,
           /*-------TABLE SPECIFIC--------*/
           DATA,
           MASTER_GID
         FROM
           LOG_DETAIL LEFT JOIN DETAIL ON LOG_GID = GID
         WHERE
               LOG_UPD_GEN IS NOT NULL/*С установленным поколением(если LOG_INS_GEN не установлено, то LOG_UPD_GEN тоже не установлено)*/
           AND LOG_DB_ID <> :A_CLIENT_ID/*Только ÷ужие*/
         INTO
           :LOG_GID,
           :LOG_UPD_GEN,
           :LOG_INS_GEN,
           :LOG_IS_DELETED,
           :LOG_OWN_GEN,
           /*-------TABLE SPECIFIC--------*/
           :DATA,
           :MASTER_GID
     DO
     BEGIN
       IF( LOG_INS_GEN = A_SERV_GEN )THEN
         BEGIN
           LOG_ACTION = 'I';/*Клиент должен вставить или обновить запись, если она ещ¸ не удалена*/
           IF( LOG_IS_DELETED = 0 )THEN SUSPEND;/*Если запись не была удалена в том же поколении в кот. вставлена*/
         END
       ELSE IF( LOG_UPD_GEN = A_SERV_GEN )THEN
         BEGIN
           IF( LOG_IS_DELETED <> 0 ) THEN LOG_ACTION = 'D';/*Клиент должен удалить запись, если она ещ¸ не удалена*/
           ELSE LOG_ACTION = 'U';/*Клиент должен обновить запись, если она ещ¸ не удалена*/
           SUSPEND;
         END
     END
END

    This file was generated with EMS InterBase/FireBird Manager (www.ibmanager.com) at 11/13/2006 10:51 PM Previous topic Chapter index Next topic

 

Хостинг от uCoz