Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (中文) » MobiLink - 服务器管理 » MobiLink 事件 » 编写同步脚本 » 编写用于下载行的脚本

 

编写 download_cursor 脚本

可编写 download_cursor 脚本将信息从统一数据库下载到远程数据库。您必须为远程数据库中每个需要下载更改的表编写一个此类型的脚本。还可以使用其它脚本来自定义下载过程,但这不是必需的。

  • 每个 download_cursor 脚本必须包含一个 SELECT 语句或对含有 SELECT 语句的过程的调用。MobiLink 服务器将使用此语句在统一数据库中定义游标。

  • 该脚本必须选择与远程数据库中相应的表中的列对应的所有列。统一数据库中的列可以与远程数据库中相应的列具有不同的名称,但是列的类型必须相互兼容。

示例

以下脚本可以作为用于保存雇员信息的远程表的 download_cursor 脚本。MobiLink 服务器将使用此 SQL 语句定义下载游标。此脚本将下载有关所有雇员的信息。

SELECT emp_id, emp_fname, emp_lname
FROM employee;

MobiLink 服务器将特定参数传递给某些脚本。要使用这些参数,可以使用命名参数,也可以在 SQL 语句中包括一个问号。如果采用后一种方法,则在对统一数据库执行该语句之前,MobiLink 服务器将替换该参数的值。以下脚本说明如何使用命名参数:

CALL ml_add_table_script( 
   'Lab',
   'ULOrder',
   'download_cursor',
   'SELECT o.order_id, o.cust_id, o.prod_id, o.emp_id, o.disc, o.quant, o.notes, o.status
         FROM ULOrder o
         WHERE o.last_modified >= {ml s.last_table_download}
               AND o.emp_name = {ml s.username}' )
注意
  • 可以从单个表或多个表的连接中选择行值。

  • 脚本自身无需包括远程表名。远程表名称也无需与统一数据库中表的名称相同。远程表名由 ml_table MobiLink 系统表中的一个条目标识。在 Sybase Central 中,远程表与其相应的脚本一同列出。

  • 远程表中的行必须包含 emp_id、emp_fname 和 emp_lname 的值。远程列必须按照该固定顺序排列,尽管它们可能具有不同的名称。远程数据库中列的顺序应与参考数据库中列的顺序相同。

  • 所有游标脚本都必须按照列在远程数据库中定义的顺序来选择列。如果在统一数据库中列名称或表结构不同,则应按远程数据库或参考数据库(两者等价)中正确的顺序选择列。系统会根据列在 SELECT 语句中的顺序,将列指派给远程数据库。

  • 建立 UltraLite 应用程序时,UltraLite 生成器将为 UltraLite 应用程序中的每个表创建一个示例下载脚本。并将这些示例脚本插入到参考数据库中。示例脚本假定统一数据库中包含的表与您的应用程序中的表相同。如果统一数据库在设计上有所不同,则您必须修改示例脚本,但这些脚本仍然为您提供了一个起点。

  • download_cursor 脚本必须包含按远程数据库中所定义的顺序排列的所有列。

另请参见