大多数同步脚本可以接收来自 MobiLink 服务器的参数。有关可在每个脚本中使用的参数的详细信息,请参见同步事件。
可以采用以下两种方式之一在您的 SQL 脚本中指定参数:
问号
命名的脚本参数
用问号表示参数是一种 ODBC 约定。要在您的 MobiLink SQL 脚本中使用问号,请在脚本中为每个参数放置一个问号。MobiLink 服务器将用一个参数的值替换每个问号。它将按照参数在脚本定义中出现的顺序来替换这些值。
参数必须为同步事件中指定的顺序。有些参数是可选的。只有在未指定任何后续参数时,参数才是可选的。例如,如果要使用参数 2,则必须使用参数 1。
MobiLink 提供了命名参数,您可以使用这些参数代替脚本中的问号。命名参数具有以下优点:
命名参数允许您以任意顺序指定可用参数的任何子集。
除了输入/输出参数以外,您可以在一个脚本内多次指定相同的命名参数。
如果使用命名参数,则可以在脚本中指定远程 ID。这是在脚本中指定远程 ID 的唯一方法。
您可以创建自己的命名参数。请参见用户定义的命名参数。
在一个脚本中不能混合使用命名参数和问号。
MobiLink 命名参数的类型共有四种。要指定命名参数,必须将其类型作为前缀,如下所示:
命名参数的类型 | 前缀 | 示例 |
---|---|---|
系统参数。 | s. | {ml s.remote_id} |
行参数。(列名。如果列包含空格,则用双引号或方括号将其括起来。) | r. |
{ml r.cust_id} {ml r."Column name"} |
旧的行参数。(仅用于 upload_update 脚本之中,以指定前映像列值。如果列名包含空格,则用双引号或方括号将其括起来。) | o. |
{ml o.cust_name} {ml o."Column name"} |
验证参数。请参见验证参数。 | a. | {ml a.1} |
用户定义的参数。请参见用户定义的命名参数。 | ui. | {ml ui.varname} |
要按名称引用脚本参数,应将该参数括在大括号内,并在前面加上 ml 前缀,如 {ml parameter }。例如,{ml s.action_code}。大括号表示是一种 ODBC 约定。
为方便起见,可以在大括号中包含更长的代码,只要这部分代码不包含与 MobiLink 脚本参数名称相同的任何模式名称即可。例如,以下两个 upload_insert 脚本均有效且等效:
INSERT INTO t ( id, c0 ) VALUES( {ml r.id}, {ml r.c0} ) |
和
{ml INSERT INTO t ( id, c0 ) VALUES( r.id, r.c0 ) } |
要在 MobiLink [创建同步模型向导] 未在您的远程数据库中生成列时使用命名的行参数,您需要使用 ml_add_column 系统过程在统一数据库中存储列信息。请参见ml_add_column 系统过程。
支持以下几种格式的注释:
双连字符前缀 (--)
双正斜线前缀 (//)
块注释 (/* */)
前两种格式可使系统忽略行末之前的脚本文本。第三种格式可使 /* 前缀和 */ 后缀之间的所有脚本文本都被忽略。块注释不能嵌套。
任何其它类型的服务商特定注释都无法识别,因此不应将其用于注释对命名参数的引用。
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |