Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.
在同步过程结束时处理语句。
在下表中,说明部分提供 SQL 数据类型。如果您使用 Java 或 .NET 编写脚本,则应该使用相应的数据类型。 请参见SQL-Java 数据类型和SQL-.NET 数据类型。
在 SQL 脚本中,可以按名称或使用问号指定事件参数。不建议使用问号,建议您使用命名参数。不能在一个脚本中混合使用名称和问号。如果使用问号,则参数必须按照如下所示的顺序并且仅当没有指定任何后继参数时才是可选的(例如,如果您想使用参数 2,则必须使用参数 1)。如果使用命名参数,则可以按照任何顺序指定任意参数子集。
s.username
VARCHAR(128)。MobiLink 用户名。
1
s.synchronization_ok
INTEGER。对于成功的同步,此值为 1;对于不成功的同步,此值为 0。
2
无。
同步完成后,MobiLink 服务器将执行此脚本。
此脚本将在下载事务后的一个单独事务中执行。如果没有要求下载通知,远程数据库可能会在 end_synchronization 脚本开始或完成前完成其同步并断开连接。
end_synchronization 脚本对于维护统计信息很有用。这是因为如果调用 begin_synchronization 脚本,则即使之前任意事务中存在错误,也会调用 end_synchronization 脚本,从而使回退上载事务时,统计信息可得到维护。
以下 SQL 脚本调用一个系统过程,该过程记录同步尝试的结束时间及其成功或失败状态。此语法用于 SQL Anywhere 统一数据库。
CALL ml_add_connection_script( 'ver1', 'end_synchronization', 'CALL RecordEndOfSyncAttempt( {ml s.username}, {ml s.synchronization_ok} )' )
以下对 MobiLink 系统过程的调用在同步脚本版本 ver1 时将名为 endSynchronizationConnection 的 Java 方法注册为 end_synchronization 事件的脚本。
CALL ml_add_java_connection_script( 'ver1', 'end_synchronization', 'ExamplePackage.ExampleClass.endSynchronizationConnection' )
以下是 Java 方法 endSynchronizationConnection 示例。它使用 JDBC 连接执行更新。此语法用于 SQL Anywhere 统一数据库。
public void endSynchronizationConnection( String user ) throws java.sql.SQLException { execUpdate( _syncConn, "UPDATE sync_count set count = count + 1 where user_id = '" + user + "' " ); }
以下对 MobiLink 系统过程的调用在同步脚本版本 ver1 时将名为 EndSync 的 .NET 方法注册为 end_synchronization 连接事件的脚本。
CALL ml_add_dnet_connection_script( 'ver1', 'end_synchronization', 'TestScripts.Test.EndSync' )
以下是 .NET 方法 EndSync 示例。它更新表 sync_count。此语法用于 SQL Anywhere 统一数据库。
namespace TestScripts { public class Test { string _curUser = null; public void EndSync( string user ) { return( "UPDATE sync_count set count = count + 1 where user_id = '" + user + "' "); }}}