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

SQL Anywhere 11.0.1 (Deutsch) » MobiLink - Clientadministration » SQL Anywhere-Clients für MobiLink » Skriptgesteuerter Upload » Gespeicherte Prozeduren für skriptgesteuerte Uploads festlegen

 

Gespeicherte Prozeduren für Aktualisierungen festlegen

Die gespeicherte Prozedur für Aktualisierungen muss eine Ergebnismenge zurückgeben, die zwei Wertemengen enthält:

  • Die erste Wertemenge legt das Pre-Image der Aktualisierung fest (die Werte in der Zeile zu dem Zeitpunkt, als sie das letzte Mal vom MobiLink-Server empfangen oder erfolgreich heraufgeladen wurden).

  • Die zweite Wertemenge legt das Post-Image der Aktualisierung fest (die Werte, die die aktualisierte Zeile in der konsolidierten Datenbank enthalten soll).

Die gespeicherte Prozedur für Aktualisierungen muss also eine Ergebnismenge mit doppelt soviel Spalten zurückgeben wie die gespeicherte Einfüge- oder Löschungsprozedur.

Beispiel

Eine ausführliche Erläuterung, wie Sie gespeicherte Prozeduren für Aktualisierungen definieren, finden Sie unter Beispiel für einen skriptgesteuerten Upload.

Im folgenden Beispiel wird eine Tabelle mit dem Namen "t1" und eine Publikation mit dem Namen "p1" erstellt. Die Publikation definiert WITH SCRIPTED UPLOAD und registriert die gespeicherte Prozedur t1_update als Aktualisierungsprozedur. Die Publikation legt die drei zu synchronisierenden Spalten fest: pk, c1 und c3. Die Aktualisierungsprozedur gibt eine Ergebnismenge mit sechs Spalten zurück. Die ersten drei Spalten enthalten das Pre-Image der Spalten pk, c1 und c3. Die letzten drei Spalten enthalten das Post-Image derselben Spalten. Beachten Sie, dass in beiden Fällen die Spalten wie bei der Erstellung der Tabelle sortiert sind, und nicht wie in der Anweisung CREATE PUBLICATION festgelegt.

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 
   )
)