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

SQL Anywhere 11.0.1 (日本語) » Mobile Link - クライアント管理 » Mobile Link 用 SQL Anywhere クライアント » スクリプト化されたアップロード » スクリプト化されたアップロードのストアド・プロシージャの定義

 

更新用ストアド・プロシージャの定義

更新用のストアド・プロシージャは、次に示す 2 つの値セットを含む結果セットを返す必要があります。

  • 最初の値セットは更新前イメージを指定します (Mobile Link サーバから最後に受信または正常にアップロードされたローの中の値)。

  • 2 つ目の値セットは更新後イメージを指定します (統合データベースで更新される必要があるローの中の値)。

つまり、更新用のストアド・プロシージャは、挿入または削除用のストアド・プロシージャの 2 倍のカラムを持つ結果セットを返す必要があります。

更新用のストアド・プロシージャの定義方法の詳細については、スクリプト化されたアップロードの例を参照してください。

次の例では、t1 というテーブルと p1 というパブリケーションを作成します。パブリケーションは、WITH SCRIPTED UPLOAD を指定し、ストアド・プロシージャ t1_update を更新プロシージャとして登録します。パブリケーションは、同期させる 3 つのカラム (pk、c1、c3) を指定します。更新プロシージャは、6 つのカラムを持つ結果セットを返します。最初の 3 つのカラムには、pk,、c1、c3 のカラムの更新前イメージが含まれています。2 つ目の 3 つのカラムには、同じカラムの更新後イメージが含まれています。どちらの場合も、カラムの順序は、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 p1 WITH SCRIPTED UPLOAD ( 
         // Order of columns here is ignored
         TABLE t1( c3, pk, c1 ) USING ( 
   PROCEDURE t1_update FOR UPLOAD UPDATE 
   )
)