更新存储过程必须返回包含以下两组值的结果集:
第一组值指定更新的前映像(上次从 MobiLink 服务器接收或成功上载到 MobiLink 服务器时行中的值)。
第二组值指定更新的后映像(统一数据库中行应更新为的目标值)。
这意味着,更新存储过程返回的结果集所包含的列数必定是插入或删除存储过程所包含列数的两倍。
有关如何定义更新存储过程的详细说明,请参见脚本式上载示例。
下面的示例创建一个名为 t1 的表和一个名为 p1 的发布。发布指定 WITH SCRIPTED UPLOAD 并将存储过程 t1_update 注册为更新过程。发布指定要同步三列:pk、c1 和 c3。更新过程返回包含六列的结果集。前三列包含 pk、c1 和 c3 列的前映像;后三列包含上述三列的后映像。请注意,在上述两种情况下,列顺序均为创建表时的列顺序,不是 CREATE PUBLICATION 语句中的列顺序。
CREATE TABLE t1( //Column ordering is taken from here pk integer primary key, c1 char( 30), c2 float, c3 double ); CREATE PROCEDURE t1_update () RESULT( preimage_pk integer, preimage_c1 char(30), preimage_c3 double, postimage_pk integer, postimage_c1 char(30), postimage_c3 double ) BEGIN ... END CREATE PUBLICATION WITH SCRIPTED UPLOAD p1 ( // Order of columns here is ignored TABLE t1( c3, pk, c1 ) USING ( PROCEDURE t1_update FOR UPLOAD UPDATE ) ) |
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |