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 的 SQL Anywhere 客户端 » 脚本式上载 » 定义脚本式上载的存储过程

 

定义更新存储过程

更新存储过程必须返回包含以下两组值的结果集:

  • 第一组值指定更新的前映像(上次从 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 
   )
)