Collection Contents 上一页 下一页 PDF

MobiLink 管理指南

同步事件

modify_last_download_timestamp 连接事件


功能 

该脚本可用于修改当前同步的 last_download 时间戳。

参数 

在下表中,[说明] 部分提供 SQL 数据类型。如果您使用 Java 或 .NET 编写脚本,则应该使用相应的数据类型。请参见 SQL-Java 数据类型SQL-.NET 数据类型

只有当未指定任何后续参数时,事件参数才是可选的。如果要使用参数 2,您必须使用参数 1。

参数 说明
1 last_download_timestamp TIMESTAMP。这是一个 INOUT 参数。
2 ml_username VARCHAR(128)
缺省操作 

无。

说明 

该脚本可用于修改当前同步的上次下载时间戳。如果定义了该脚本,则 MobiLink 同步服务器将调用该脚本并使用修改过的 last_download 时间戳作为传递到下载脚本的 last_download 时间戳。

modify_last_download_timestamp 事件的 SQL 脚本必须作为存储过程执行。MobiLink 同步服务器传入 last_download_timestamp 作为传递给存储过程的第一个参数,并用该存储过程传出的第一个值替换该时间戳。

例如,如果定义了以下 download_cursor 脚本,MobiLink 同步服务器将用执行该 SELECT 语句前修改的上次下载时间戳的值替换 ?:

SELECT pk, c2, c3 FROM test WHERE last_modified >= ?

该脚本紧接 prepare_for_download 脚本之前在同一事务中执行。

SQL 示例 

首先,为 Adaptive Server Anywhere 统一数据库创建一个过程。在 Oracle 中:

CREATE PROCEDURE modify_nldts(
      nldts      OUT DATE,
      ldts      IN DATE,
      user_name    IN VARCHAR )
       AS
       BEGIN
       -- N is max replication latency in consolidated cluster
      nldts := nldts - N;
       END;

在 Adaptive Server Anywhere、Adaptive Server Enterprise 或 Microsoft SQL Server 中:

CREATE PROCEDURE modify_nldts
      @nldts     DATETIME OUTPUT,
      @ldts      DATETIME,
      @t_name    VARCHAR( 128 )
       AS
       BEGIN
       -- N is max replication latency in consolidated cluster
      SELECT @nldts = @nldts - N
       END

然后,将脚本安装到您的统一数据库中。对于 Adaptive Server Anywhere 统一数据库:

ml_add_connection_script(
  'my_version',
  'modify_last_download_timestamp',
  '{call modify_nldts(?,?,?)}' )
Java 示例 

下面的存储过程调用在同步脚本版本 ver1 时将名为 modifyLastDownloadTimestamp 的 Java 方法注册为 modify_last_download_timestamp 连接事件的脚本。

call ml_add_java_connection_script(
  'ver1',
  'modify_last_download_timestamp',
  'ExamplePackage.ExampleClass.modifyLastDownloadTimestamp' )

下面是示例 Java 方法 modifyLastDownloadTimestamp。它输出当前新的时间戳并修改传入的时间戳。

public String modifyLastDownloadTimestamp(
     Timestamp last_download_time,
     String user_name )
{  java.lang.System.out.println( "old date: " +
   last_download_time.toString() );
   last_download_time.setDate(
   last_download_time.getDate() -1 );
   java.lang.System.out.println( "new date: " +
   last_download_time.toString() );
   return( null ); }

Collection Contents 上一页 下一页 PDF